병합정렬
시간복잡도가 O(nlogn) 인 정렬 알고리즘이다. divide & conquer 의 대표적인 예라 볼 수 있다. 동작방식은 아래를 재귀적으로 한다. 1. 배열을 절반으로 분할 한다. 2. 분할 된 배열을 병합한다. void merge_sort(int * arr, int len) { if (len merge -> arr1 = {5} & arr2 = {4} -> arr[] = {4, 5} -> arr1[] = {4, 5}, 여기서 arr1 == arr 2) merge_sort(arr + 3, 3) : 4, 5 | {3, 2, 1} ->merge_sort(arr + 2, 1) & merge_sort(arr + 2 + 1, 2) -> merge_sort(arr + 2 + 1, 1) & merge_sort(ar..