我正在学习算法,并尝试使用Swift交换到数组中的整数,我知道使用'swap'函数是有效的,但我尝试学习不同的方法。 所以我尝试不同的方法,我不明白一两件事 - 我有200个整数数组,当我用这个方法:Swap整数算法
func selectionSort(var array: [Int]) {
print("Selection Sort")
for i in 0..<array.count {
for j in i+1..<array.count {
if array[j] < array[i] {
let temp = array[j] //runs 7282 times
array[j] = array[i] // runs 7282 times
array[i] = temp // runs 7282 times
}
}
}
print(array)
}
运行7秒,并交换代码运行7282(左右)次, 但是当我使用这个:
func selectionSort(var array: [Int]) {
print("Selection Sort")
for i in 0..<array.count {
for j in i+1..<array.count {
if array[j] < array[i] {
array.insert(array[j], atIndex: i)
array.removeAtIndex(j+1)
}
}
}
print(array)
}
它只能运行198次1.3秒了吗?
我不明白为什么运行次数会有这样的不同?它只出现在选择排序中。 如果我使用气泡排序,则运行次数没有这种差异。
你在两个例子中获得排序数组吗?它看起来像第二种方法删除其中一个值,并重复其他值,这意味着您的实现可能不正确。你会希望执行所提到的代码的次数更少,因为如果你复制数组中的每个值,它周围的谓词不会更经常。 – Glubus