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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| public static void mergeSort(int[] arr, int left, int right, int[] temp){ if(left < right){ int mid = (left + right) / 2; mergeSort(arr, left, mid, temp); mergeSort(arr, right, mid+1, temp); merge(arr, left, mid, right, temp); } } public static void merge(int[] arr, int left, int mid, int right, int[] temp) { int i = left; int j = mid +1; int t = 0; while(i <= mid && j <= right){ if(arr[i] < arr[j]){ temp[t] = arr[i]; t++; i++; } else{ temp[t] arr[j]; t++; j++; } } while(i <= mid){ temp[t] = arr[i] t++; i++; } while(j <= right){ temp[t] = arr[j]; t++; j++; } t = 0; int tempLeft = left; while(tempLeft <= right){ arr[tempLeft] = temp[t]; t++; tempLeft++; } }
|