Ios 对数组进行排序,并使用第一个[swift]的排序索引更改第二个数组
我有两个数组A和B。 我想知道排序数组A和根据A的排序索引更改B的最有效实现是什么 到目前为止,我已经解决了以下问题:Ios 对数组进行排序,并使用第一个[swift]的排序索引更改第二个数组,ios,arrays,sorting,swift,Ios,Arrays,Sorting,Swift,我有两个数组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] =
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)
var A=[5.0,3.0,7.0,0.0,2.0]
VarB=[3.0,4.0,5.0,6.0,7.0]
变量C=B
设idxs=sorted(index(A)){A[$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)]
var a=[5.0,3.0,7.0,0.0,2.0]
VarB=[3.0,4.0,5.0,6.0,7.0]
var c=数组(zip(a,b))/[(5.0,3.0),(3.0,4.0),(7.0,5.0),(0.0,6.0),(2.0,7.0)]
c、 排序{$0.0<$1.0}/[(0.0,6.0)、(2.0,7.0)、(3.0,4.0)、(5.0,3.0)、(7.0,5.0)]
以下是我针对类似问题提出的解决方案:
var name=[“保罗”、“约翰”、“大卫”]
变量年龄=[35,42,27]
让newOrder=names.enumerate().sort({$0.1这可以压缩两个以上的数组吗?我怎样才能将所有内容解压回正常状态?不,zip可以处理两个数组。显然,您可以手动创建包含两个以上元素的元组数组。您可以使用map解压数组,但如果可能,这里的想法是将所有数组放在一起。我正在处理两个以上的数组。因此lution很好,但不适合我的问题。无论如何,谢谢。
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]})