삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.
원소의 개수가 적을 경우 유용하며, 구현이 간단하다.
예제 - [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/정렬_알고리즘
'Algorithm' 카테고리의 다른 글
| Heap Sort (힙 정렬) (0) | 2016.03.19 |
|---|---|
| Marge Sort (합병 정렬) (0) | 2016.03.19 |
| Bubble Sort (거품 정렬) (0) | 2016.02.27 |
| Selection Sort (선택 정렬) (0) | 2016.02.22 |
| Binary Search (이진 탐색) (0) | 2016.02.20 |