1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| void MSort(arr[], arr_res[],int left,int right) { if(left == right) arr_res[left] = arr[left]; int mid = (left + right) / 2; MSort(arr,arr_res,left,mid); MSort(arr,arr_res,mid+1,right); Merge(arr,arr_res,left,mid,right); }
void Merge(int arr[],int arr_res[],int left,int mid,int right) { for(int i = left,k = left,j = mid+1; i <=mid && j<= right;k++) { if(arr[i] < arr[j]) arr_res[k] = arr[i++]; else arr_res[k] = arr[j++]; } if(i < left) arr_res[k...] = arr[i...]; if(j < right) arr_res[k...] = arr[j...]; return; }
|