알고리즘
합병 정렬(Merge Sort)
Lich King
2015. 10. 30. 08:58
간단한 합병정렬이다.
void merge(int a[], int b[], int low, int mid, int high){
int i, l, m, k;
l = low;
m = mid + 1;
k = low;
while (l <= mid && m <= high){
if (a[l] <= a[m]){
b[k++] = a[l++];
}
else
b[k++] = a[m++];
}
if (l>mid)
for (i = m; i <= high; i++)
b[k++] = a[i];
else
for (i = l; i <= mid; i++)
b[k++] = a[i];
}
void merge_sort(int a[], int b[], int low, int high){
int mid;
if (low<high){
mid = (low + high) / 2;
merge_sort(a, sorted, low, mid);
merge_sort(a, sorted, mid + 1, high);
merge(a, sorted, low, mid, high);
}
}