void Merge(int arr[], int reg[], int start, int end) { if (start >= end)return; int len = end - start; int mid = len / 2 + start; int start1 = start, end1 = mid; int start2 = mid + 1, end2 = end; Merge(arr, reg, start1, end1); Merge(arr, reg, start2, end2); int k = start; while (start1 <= end1 && start2 <= end2) reg[k++] = arr[start1] < arr[start2] ? arr[start1++] : arr[start2++]; while (start1 <= end1) reg[k++] = arr[start1++]; while (start2 <= end2) reg[k++] = arr[start2++]; for (k = start; k <= end; k++) arr[k] = reg[k]; } void MergeSort(int arr[], const int len) { int reg[len]; Merge(arr, reg, 0, len - 1); } int lst[] = {4,54,6,45,12,312,0,-321}; MergeSort(lst, 8); */
|