我正在學習算法,並嘗試使用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