[자료구조] 합병정렬(Merge Sort)의 증명
합병정렬 int sort(int a[], int n) { int h; int b[n]; h = n / 2; // copy a[] to b[] sort(b, h); sort(b+h, n-h); // Merge two halves in b to a return 0; } 정렬된 두 가지 배열을 정렬되도록 합치는 것이 Merge(합병)이다. 배열을 가장 작게 쪼갠 뒤, 이들을 계속해서 Merge하면 최종적인 배열이 정렬될 것이다. 반복문으로도 구현할 수 있지만, 조금 복잡해져서 재귀를 활용했다. copy와 merge 코드 구현부는 제외하고 서술했다. 시간복잡도 O(N*logN) 합병정렬의 증명 입력 집합 a[0],a[1],...,a[n-1] 의 정수 집합에 대해 Sorting이 완료된 집합은 b[0],b[1],..