-
반응형12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include <stdio.h>#include <stdlib.h>void printArr(int *a, int start, int end){int i;for (i = start; i <= end; i++)printf("%3d", a[i]);printf("\n");}void merge(int* a, int start, int mid, int end){int index1 = start, index2 = mid + 1, index3 = start, i;int* tmp;tmp = (int*)malloc(sizeof(int) * (end + 1));while (index1 <= mid && index2 <= end){if (a[index1] <= a[index2]){tmp[index3] = a[index1];index1++;}else{tmp[index3] = a[index2];index2++;}index3++;}while (index1 <= mid)tmp[index3++] = a[index1++];while (index2 <= end)tmp[index3++] = a[index2++];for (i = start; i <= end; i++)a[i] = tmp[i];}void mergeSort(int* a, int start, int end){int mid;if (start < end) {mid = (start + end) / 2;mergeSort(a, start, mid);mergeSort(a, mid + 1, end);merge(a, start, mid, end);printArr(a, start, end);}}int main(void){int a[] = { 10, 50, 69, 27, 40, 72, 59, 21, 96, 4 };int i;mergeSort(a, 0, 9);printArr(a, 0, 9);}
cs 결과:
반응형