[알고리즘] 병합 정렬
·
알고리즘/풀이 힌트
병합 정렬 : 피벗 값이 없고 일단 정확히 반으로 자르고 나중에 정렬 -> 퀵 정렬과 마찬가지로 ' 분할 정복' 방법을 채택한 알고리즘 정확하게 반절씩 나눈다는 점에서 최악의 경우에도 O(N * logN)의 시간 복잡도를 가진다. 76583519를 병합 정렬을 사용하여 정렬한다고 했을 경우 시작 : 7 6 5 8 3 5 9 1 1 : 67 58 35 19로 2개씩 묶어서 2개씩 각각 정렬해 준다. 2 : 5678 1359로 4개씩 묶어 4개씩 각각 정렬해 준다. 3 : 13556789 로 하나로 합치며 정렬하여 준다. 이때 폭을 N 높이를 log2N이라고 한다. 즉, 위 정렬은 8 * log28(3) 번 연산을 한다. 1번에서 8번 -> 76 정렬 때 2번, 58 정렬 때 2번, 35 정렬 ..