- 수학적으로 log(n)에 비례한다고 하고, 로그 시간복잡도라고 한다.
- ex)
n이 10^2 이라면 3번 출력, 10^5이라면 6번 출력된다. 즉, log(n)에 비례해 수행 시간이 달라짐
- O(log(n))으로 표현
- array[0] 값을 기준값(pivot)으로 설정
- pivot을 기준으로 더 작거나 같은 값이 들어있는 리스트와 더 큰 값이 들어있는 리스트로 나눔
- 그리고 less_or_equal, pivot, greater 순서로 리스트를 정렬
- less_or_eqaul과 greater 리스트에 대해서도 지금까지의 작업을 반복하면 정렬이 완성
- 합병 정렬은 값을 비교하지 않고 리스트를 분할
- 나눈 리스트를 또 각각 절반으로 분할
- 남아있는 리스트의 길이가 0이나 1이면 분할을 멈추고 리스트를 정렬하며 합침
- 10과 2를 정렬하고 합치면
- 1과 7을 정렬하고 합치면
- 이러한 작업을 계속해나가면 처음의 리스트가 정렬된다.