합병/병합 정렬(merge sort)
분할 정복 알고리즘의 대표적인 예 1. 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 2. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 3. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. * 시간 복잡도 : O(n log n) (= O(n) (각 단계의 노드 길이) * O(log n) (단계의 깊이)) - 문제에서 데이터 개수가 최대 1,000,000개, 제한 시간 2초 이내라면 시간 복잡도가 위와 같은 O(n logn)의 정렬 알고리즘을 이용해야 함 (2^10 = 약 1,000이므로 n=1,000,000일 때, n logn = 20,000,000이고, 파이썬에서는 1초에 2천~5천만 번의 연산이 가능하므로 제한에 걸리지 않는다(간신히 통과할 수도 있음)) de..
2020. 10. 1.