我有两个数组A和B. 我想知道根据A的排序索引排序数组A和更改B的最有效实现是什么。
到目前为止,我已经解决了以下问题:
var A = [5.0, 3.0, 7.0, 0.0, 2.0]
var B = [3.0, 4.0, 5.0, 6.0, 7.0]
var C = B
let idxs = sorted(indices(A)) { A[$0] < A[$1] }
println(idxs)
for i in 0...A.count-1 {
C[i] = B[idxs[i]]
}
println(C)
答案 0 :(得分:0)
您可以将两个数组压缩在一起并按第一项排序:
var a = [5.0, 3.0, 7.0, 0.0, 2.0]
var b = [3.0, 4.0, 5.0, 6.0, 7.0]
var c = Array(zip(a, b)) // [(5.0, 3.0), (3.0, 4.0), (7.0, 5.0), (0.0, 6.0), (2.0, 7.0)]
c.sort { $0.0 < $1.0 } // [(0.0, 6.0), (2.0, 7.0), (3.0, 4.0), (5.0, 3.0), (7.0, 5.0)]
答案 1 :(得分:0)
以下是我为类似问题提出的解决方案:
How to sort 1 array in Swift / Xcode and reorder multiple other arrays by the same keys changes
var names = [ "Paul", "John", "David" ]
var ages = [ 35, 42, 27 ]
let newOrder = names.enumerate().sort({$0.1<$1.1}).map({$0.0})
names = newOrder.map({names[$0]})
ages = newOrder.map({ages[$0]})