【问题标题】:Ordering an array with the smallest value first MATLAB [duplicate]首先对具有最小值的数组进行排序MATLAB [重复]
【发布时间】:2018-12-03 21:36:04
【问题描述】:

我正在尝试获取二维数组中的最小值但保持二维数组的顺序,例如:

如果我有数组

7  |  7

2  |  3

8  |  0

3  |  7

5  |  5

我想订购它以便显示

2  |  3

8  |  0

3  |  7

5  |  5

7  |  7

我查看了minksortrows,但似乎都没有提供我需要的输出。

对此的任何帮助将不胜感激!

【问题讨论】:

  • 对不起,我用了一个不好的例子,我已经更新了我的问题。 @SardarUsama
  • 现在我更困惑了。您使用什么排序标准?
  • 所以我希望左边的最小值是第一个,循环遍历数组,删除顶部的值并将它们添加到数组的底部,以便顺序或数组不是迷路了。
  • 添加到问题本身是一件好事。

标签: arrays matlab sorting


【解决方案1】:

您可以使用circshift 以您需要的方式更改元素的顺序。首先找到最小元素的索引,然后移动,使该元素位于顶部:

M = [7,7   % example data from OP
     2,3
     8,0
     3,7
     5,5];

[~,ind] = min(M(:,1));
M = circshift(M,1-ind,1);

【讨论】:

    【解决方案2】:

    对于更新后的问题,您首先需要确定要移动到矩阵顶部的行。一旦知道这一点,您就可以简单地重新排列矩阵,以便将这一行以及之后出现的所有行放在第一位。

    A = [7     7
         2     3
         8     0
         3     7
         5     5]
    [~,index] = min(A(:,1)); % Identify row which should occur first
    A = A([index:end,1:(index-1)], :) % Rearrange rows
    A =
         2     3
         8     0
         3     7
         5     5
         7     7
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 2016-07-13
      • 2017-04-12
      • 2011-02-18
      • 2021-08-22
      • 2019-06-26
      • 2018-03-16
      相关资源
      最近更新 更多