Insertion Sort (삽입 정렬)
삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.
원소의 개수가 적을 경우 유용하며, 구현이 간단하다.
예제 - [12 11 13 5 6]
두 번째 원소 11을 이전 리스트와 비교하여 적절한 위치에 삽입 -> 11 12 13 5 6 세 번째 원소 13을 이전 리스트와 비교하여 적절한 위치에 삽입 -> 11 12 13 5 6 네 번째 원소 5를 이전 리스트와 비교하여 적절한 위치에 삽입 -> 5 11 12 13 6 마지막 원소 6을 이전 리스트와 비교하여 적절한 위치에 삽입 -> 5 6 11 13 13 |
코드 - Swift
func insertionSort(var arr : Array<Int>) -> Array<Int> { var i : Int var j : Int var temp : Int var len : Int
len = arr.count
for i=1; i<len; i++ { temp = arr[i] j = i - 1
while j >= 0 && arr[j] > temp { arr[j+1] = arr[j] j-- }
arr[j+1] = temp }
return arr } var arr = [12, 11, 13, 5, 6] var result : Array<Int> result = insertionSort(arr) print(result) |
시간복잡도
- 최악의 경우 (배열이 정렬 기준 역순으로 되어 있을 경우) : O(n*n)
- 최선의 경우 (이미 정렬이 되어 있는 경우) :O(n)
삽입 정렬 -> 제자리 정렬 안정 정렬 1 온라인 정렬 2 3
참고 1 : http://geeksquiz.com/insertion-sort/
참고 2 : https://ko.wikipedia.org/wiki/정렬_알고리즘