假设我有一个数组 [4, 1, 8, 5] 和另一个对应于第一个数组中每个对象的数组,例如 ["Four", "One", "Eight", "Five"]。如何按升序对第一个数组进行排序,同时将第二个数组中的相应对象移动到 Swift 中的相同索引?
最佳答案
听起来不像最佳实践,但这可以解决您的问题:
var numbers = [4,7,8,3]
var numbersString = ["Four","Seven","Eight","Three"]
func bubbleSort<T,Y>(inout numbers:[T],inout _ mirrorArray: [Y], _ comapre : (T,T)->(Bool)) -> () {
let numbersLength = numbers.count
for i in 0 ..< numbersLength {
for j in 1 ..< numbersLength-i {
if comapre(numbers[j-1],numbers[j]) {
swap(&numbers[j-1], &numbers[j])
swap(&mirrorArray[j-1], &mirrorArray[j])
}
}
}
}
bubbleSort(&numbers,&numbersString) { (a, b) -> (Bool) in
a<b
}
print(numbers,numbersString)
*这是通用的,因此适用于任何类型并让您提供条件
关于arrays - 排序数组和对应数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390313/