插入排序
插入排序是计算机科学中更基本的算法之一。插入排序通过迭代集合对元素进行排名,并根据元素的值定位元素。该集合分为有序和未分类的一半,并重复,直到所有元素都被排序。插入排序具有 O(n2)
的复杂度。你可以将其放在扩展名中,如下面的示例所示,或者你可以为其创建方法。
extension Array where Element: Comparable {
func insertionSort() -> 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 {
let key = output[primaryindex]
var secondaryindex = primaryindex
while secondaryindex > -1 {
if key < output[secondaryindex] {
//move to correct position
output.remove(at: secondaryindex + 1)
output.insert(key, at: secondaryindex)
}
secondaryindex -= 1
}
}
return output
}
}