목표: 숫자 배열을 낮은 순서부터 높은 순서로(또는 높은 순서부터 낮은 순서로) 정렬한다.
숫자 배열이 주어지면 올바른 순서로 정렬해야 한다. 삽입 정렬 알고리즘은 다음과 같이 동작한다:
n개의 숫자를 오름차순으로 정렬하는 문제를 다음과 같이 분해할 수 있다:
다음은 Swift로 구현한 느린 정렬(slow sort) 코드이다:
func slowSort(_ i: Int, _ j: Int, _ numberList: inout [Int]) {
guard i < j else { return }
let m = (i+j)/2
slowSort(i, m, &numberList)
slowSort(m+1, j, &numberList)
if numberList[j] < numberList[m] {
let temp = numberList[j]
numberList[j] = numberList[m]
numberList[m] = temp
}
slowSort(i, j-1, &numberList)
}
경우 | 성능 |
---|---|
최악 | 느림 |
최선 | O(n^(log(n)/(2+e)))) |
평균 | O(n^(log(n)/2)) |
Swift Algorithm Club을 위해 Lukas Schramm가 작성
(Insertion Sort Readme를 템플릿으로 사용함)