【发布时间】:2018-05-02 14:49:25
【问题描述】:
我想对一个数组进行排序并将“镜像”顺序更改为另一个相同维度的数组。
这个问题类似于这个问题,但对于 Swift 语言: Better way to sort 2 "linked" arrays?
例子:
let arr1 = ["a", "b", "c", "d", "e"]
let arr2 = [1, 5, 9, 2, 3]
... //sort
//result == ["a", "d", "e", "b", c"]
我知道的近似解决方案:
for i in stride(from 0, to: arr2.count - 1, by: 1) {
for j in stride(from i + 1, to: arr2.count, by: 1) {
if arr2[i] > arr2[j] {
...//swap arr2[i] and arr2[j]
...//swap arr1[i] and arr1[j]
}
}
}
但是他们为在 Swift 中高级处理数组添加了许多额外的可能性。那么有没有可能用内部的 Swift 特性来简化这个解决方案呢?
注意:arr1 和 arr2 作为单独的数组给出。
已编辑
是的。您发现了类似的问题,但它们的标题很糟糕,并且不能反映作者需要的答案。换句话说,如果您删除/关闭我的问题,人们可能会继续再次询问,因为无法找到现有标题的内容!
【问题讨论】:
-
正确的解决方案是只有一个数组。定义一个
struct并将您的数据妥善保存在一起。 -
@staticVoidMan 是的,他们问同样的事情。但与此同时,他们并没有清楚地提出他们的问题(您的链接中还有另一个重复的问题)。
sort array based on array听起来像 2 个具有类继承关系的数组。2 linked arrays更清晰,因为这些数组没有明确的关系,并且使用我的标题更容易找到 - 我看到你打算关闭并删除我的问题 -
没有计划删除您的问题。它将作为副本保持关闭。这很好,对你没有任何负面影响。由于标题更好,进行搜索的人可能会遇到您的问题。他们将在此处看到答案以及指向副本及其所有答案的链接。人人共赢。