有没有办法从预定义的值开始对数组元素进行排序?
例如,我想在V = [5 6 7 1 2]
中转换V2 = [2 5 6 7 1]
。
在这种情况下,我想从值2
开始由于
答案 0 :(得分:2)
像这样(假设V
是行向量):
value = 2
V2 = sort(V);
V2 = circshift(V2, [1, -find(V2 == value, 1) + 1]);
说明:首先需要对V
进行排序。然后,您会发现第一个元素的索引等于value
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