Ios 对数组进行排序,并使用第一个[swift]的排序索引更改第二个数组

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] =

我有两个数组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)
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]})