1

有没有办法从预定义的值开始对数组的元素进行排序?

例如我想转换:V = [5 6 7 1 2]V2 = [2 5 6 7 1].

在这种情况下,我想从值 2 开始

谢谢

4

1 回答 1

2

像这样(假设V是一个行向量):

value = 2
V2 = sort(V);
V2 = circshift(V2, [1, -find(V2 == value, 1) + 1]);

解释:首先你需要排序V。然后你会发现第一个元素的索引等于valuewith find(V2 == value, 1)。最后,您必须将已排序的向量“旋转”正确的数量才能进入value第一个位置。由于V是行向量,因此您需要沿第二维旋转,因此您必须将其[1, ...]用作 circshift 的第二个参数。请注意,这仅在value实际上是V.

示范:

>> V = [5 6 7 1 2];
>> value = 2;
>> V2 = sort(V);
>> V2 = circshift(V2, [1, -find(V2 == value, 1) + 1])
V2 =
     2     5     6     7     1

>> V = [ -1 -2 -1 0 0 1 1 2];
>> value = 2;
>> V2 = sort(V);
>> V2 = circshift(V2, [1, -find(V2 == value, 1) + 1])
V2 =
     2    -2    -1    -1     0     0     1     1
于 2013-09-23T20:37:50.350 回答