首先以最小值订购一个数组

时间:2018-12-03 21:36:04

标签: arrays matlab sorting

我试图在2D数组中获得最小值,但保持2D数组的顺序,例如:

如果我有数组

7  |  7

2  |  3

8  |  0

3  |  7

5  |  5

我想订购它以便显示

2  |  3

8  |  0

3  |  7

5  |  5

7  |  7

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

对此将提供任何帮助!

2 个答案:

答案 0 :(得分:4)

您可以使用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);

答案 1 :(得分:1)

对于更新后的问题,您首先需要确定要移至矩阵顶部的行。一旦知道这一点,您就可以简单地重新排列矩阵,以便将该行及其后发生的所有操作都放在第一位。

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