假设我们有两个数组:
a = [4,3,8,7]
b = [(1,2),(5,6),(8,6),(9,0)]
所以我们现在想要的是,对数组 a 进行排序。
所以排序的结果应该是 a_sorted = [3,4,7,8]
。
而且,我们不能对数组 b 进行排序。
相反,数组 b 的顺序必须根据数组 a 的排序顺序进行更改。
因此,数组 b 必须是 b_sorted = [(5,6),(1,2),(9,0),(8,6)]
即,a_sorted 的顺序将是 a_sorted = [a[1],a[0],a[3],a[2]]
。
相应地,b_sorted = [b[1],b[0],b[3],b[2]]
问题比较简单。这种排序有名称吗? :
最佳答案
您只是找到一个数组的排序排列([2,1,4,3] 表示 a)并将其应用于另一个数组。许多语言都能很好地处理这个问题。
例如,在 Matlab 中, 你可以调用 [sortedA, sortedBy] = sort([4 3 8 7]);
然后 sortedA = a(sortedBy) = [3 4 7 8]
和 sortedBy = [2 1 4 3]
,所以你的新 b 将是 b(sortBy)
。
关于arrays - 串联排序两个数组的奇怪案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144132/