arrays - 排序数组和对应数组

标签 arrays swift sorting

假设我有一个数组 [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/

相关文章:

algorithm - 在算法分析中, "for some constant c"究竟是什么意思呢? (例如,快速排序)

ios - Swift:多项 for 循环检查数组中的输入值

javascript - Jquery按数组中的元素值排序

c - Malloc() 不起作用 + 字符数组清除

c++ - 我如何创建结构的结构等。嵌套多个结构?

ios - 为什么不写optional mark就可以声明一个变量?

ios - Swift - 按范围对数组元素进行排序

sorting - 以编程方式设置网格排序

arrays - 从模型 Swift 3 中的数组调用项目

c++ - 从文件 C++ 读取奇怪的整数