選擇排序
選擇排序因其簡單性而著稱。它從陣列中的第一個元素開始,將其值儲存為最小值(或最大值,具體取決於排序順序)。然後它通過陣列進行迭代,並將 min 值替換為在路上找到的 min 之後的任何其他值。然後將該最小值放在陣列的最左邊部分,並從下一個索引重複該過程,直到陣列結束。選擇排序具有 O(n2)
的複雜度,但它被認為比它的對應物慢 - 選擇排序。
func selectionSort() -> Array<Element> {
//check for trivial case
guard self.count > 1 else {
return self
}
//mutated copy
var output: Array<Element> = self
for primaryindex in 0..<output.count {
var minimum = primaryindex
var secondaryindex = primaryindex + 1
while secondaryindex < output.count {
//store lowest value as minimum
if output[minimum] > output[secondaryindex] {
minimum = secondaryindex
}
secondaryindex += 1
}
//swap minimum value with array iteration
if primaryindex != minimum {
swap(&output[primaryindex], &output[minimum])
}
}
return output
}