1 void merge(int v[], int b, int n) { 2 int i = 0; 3 int j = b; 4 int *temp = new int[n]; 5 for (int k = 0; k < n; k++) { 6 if (i >= b) { 7 temp[k] = v[j++]; 8 continue; 9 } 10 if (j >= n) { 11 temp[k] = v[i++]; 12 continue; 13 } 14 if (v[i] < v[j]) { 15 temp[k] = v[i++]; 16 } else { 17 temp[k] = v[j++]; 18 } 19 } 20 memcpy(v, temp, n * sizeof(int)); 21 delete[] temp; 22 } 23 24 void merge_sort(int v[], int n) { 25 if (n > 1) { 26 int b = n / 2; 27 merge_sort(v, b); 28 merge_sort(v + b, n - b); 29 merge(v, b, n); 30 } 31 }
原文:https://www.cnblogs.com/ren-yu/p/10928068.html