arrays - 串联排序两个数组的奇怪案例

标签 arrays algorithm sorting

假设我们有两个数组:

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/

相关文章:

c - C语言中声明void**是什么意思?

algorithm - 递归关系,分析算法

java - 环游世界寻找最低点开始

java - 从Java数组中获取前四名最大值

sorting - 内部查询中单个查询的 Elasticsearch 排序结果

java - JSON - 添加 Double 类型的数组进行编码

c - 为什么指针 (*) 和数组 ([]) 符号绑定(bind)到变量名而不是键入变量声明?

c++ - C++中数组的长度

java - 递归地生成功率集,没有任何循环

algorithm - 该算法的运行时间