algorithm/theory

이진 삽입 정렬(binary insertion sort)

qkqhxla1 2016. 6. 18. 14:06

이진 삽입 정렬은 삽입 정렬에 이진 탐색을 합친 알고리즘이라고 한다.

앞에 적은 삽입정렬을 보면 알겠지만 정렬되지 않는 원소를 삽입하기 위해서 왼쪽 원소들을 순차적으로 비교해나간다. 그런데 이진 삽입 정렬은 이미 왼쪽 원소들은 정렬되어있으므로, 이 사실을 기반으로 이진 탐색으로 삽입할 위치를 찾는다.



시간복잡도.     최고      평균     최악

삽입 정렬       O(N)      O(N^2) O(N^2)

이진 삽입 정렬.O(NlogN) O(N^2) O(N^2)


직접 소스코드를 돌려 본 결과 시간복잡도로 추측해 본것처럼 최고의 경우에만 조금 빨라질거라는 예상과 달리 최고의 경우에는 약간 느려지고, 나머지 경우에는 약간 빨라졌다.

참고


http://www.brpreiss.com/books/opus4/html/page491.html


http://egloos.zum.com/serinlee9/v/1137607


http://jeffreystedfast.blogspot.kr/2007/02/binary-insertion-sort.html

'algorithm > theory' 카테고리의 다른 글

선형 탐사법.  (0) 2016.07.13
레드-블랙 트리 탐색.  (0) 2016.06.29
동적 계획법(다이나믹 프로그래밍, DP).  (0) 2016.06.17
이진 트리 탐색.  (0) 2016.06.16
이진 탐색.  (0) 2016.06.15