在降序排序数组的数字使用while循环

47个视图(30天)
我写的代码在降序排序数字但我的代码未能这样做(其实我是失败lol)。
例子:考虑给定数组x =[4 6 9 2 5 0 1]我要输出y (9 6 5 4 2 1 0)。
更重要的是,我的想法是这样的seq -
1)找到最大数量从一个给定的数组
2)然后使用find函数来检测国际防务展的最大元素
3)然后从数组中删除的最大数量,减少了数组长度
但是,我成功地未能做什么我在寻找。我决心只使用while循环执行该代码(没有其他明显的e。g函数和for循环)
谁能告诉我哪里做错了,而我正在写代码?我的意思是错误代码的一部分。
我将很高兴如果有专家给我一个建议或建议正确的代码。
函数y = sortingnumsindes (x)
y = [];
(元素个数(x) > 0)
y = max (x);
p =找到(x = = y);
x (p) = [];
结束
y = x;
结束

接受的答案

大卫•希尔
大卫•希尔 2020年5月4日
函数y = sortingnumsindes (x)
y = [];
(元素个数(x) > 0)
m = max (x);
p =找到(x = = m, 1);%需要,1处理任何副本
x (p) = [];
y = [y、m];%需要每个后续元素存储在数组中
结束
结束
6个评论
Guillaume
Guillaume 2020年5月4日
作为我的评论似乎有点争议我最初写的是一些额外的原因:
有几个步骤来编写代码。第一个找出算法,已经有一个问题写算法,这是缺少一个步骤,最大附加到输出。然后就是将算法转化为代码,这里有几个问题。还有部分调试和理解这是哪里出了错。在我看来,为了得到更好的编码需要自己经历了所有这些步骤。这里特别是悉德需要明白,y是用于两个不同的东西,他从未穿过失踪的一步存储被删除的元素。
所以,我害怕 “明确观点,不明白里面发生什么” 只能通过一个试错的过程,而不是解决方案直接交给您。

登录置评。

答案(1)

Guillaume
Guillaume 2020年5月4日
“1)找到最大数量从给定数组”
”2)然后使用find函数来检测的最大元素国际防务展”
看一看的文档吗 马克斯 ,特别是第二输出这正是你想要的指数。
p =找到(x = = y);
将在您的代码中只要只有一个值等于最大。如果有不止一个, p 是一个向量的指数,你会最终删除太多的元素。
y = [];
%……
y = max (x);
%……
y = x;
你需要重新考虑 y 是,你使用它有两个目的,你如何填补它。
1评论
赛义德·沙阿
赛义德·沙阿 2020年5月4日
编辑:赛义德·沙阿 2020年5月4日
我困惑的兄弟。它还显示了序列中的最后一个数字。不能找到出路的呢?

登录置评。

类别

找到更多的在矩阵和数组帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!