Comparison Sort
기존 것의 최선인 O(nlogn) 보다 더 좋은 시간복잡도 알고리즘을 위해!
- 데이터들간의 상대적 크리관계만을 이용해서 정렬하는 알고리즘
- 따라서 데이터들간의 크기 관계가 정의되어 있으면, 어떤 데이터에든 적용가능
(문자열, 알파벳, 사용자 정의 객체 등)
- 버블소트, 삽입정렬, 합병정렬, 퀵소트, 힙정렬 등
Non-comparison sort
- 정렬할 데이터에 대한 사전지식을 이용, 적용에 제한
- Bucket sort
- Radix sort
하한 (Lower bound)
- 입력된 데이터를 한번씩 다 보기 위해서 최소 O(n)의 시간복잡도 필요
- 합병정렬과 힙정렬 알고리즘들의 시간복잡도는 O(nlog2n)
- 어떤 comparison sort 알고리즘도 O(nlog2n)보다 나을 수 없다.
Decision Tree로 기재해서 보여 줌...
세가지 경우의 수 merge 하는 거 -.-)
Decision Tree
Leaf 노드의 개수는 n!개 (모든 순열에 해당)
최악의 경우 시간 복잡도는 트리 높이
- 전체 트리의 높이가 n!일 때 전체 트리의 개수는 logn!을 넘을 수 없음
logn!= O(nlogn) = 스털링의 정의라는걸 이용하면 nlog2n 이라고 함
이진 트리의 경우 트리의 높이는
height ≥ log2n! = O(nlog2n)
댓글
댓글 쓰기