归并排序-java
void mergeSort(int[] nums,int start, int end) {
if (start == end) {
return;
}
int middle = (start + end) / 2;
mergeSort(nums, start, middle);
mergeSort(nums, middle + 1,end);
sort(nums,start,middle + 1,end);
}
void sort(int[] nums, int start, int middle, int end) {
int[] temp = new int[end - start + 1];
int i = start;
int j = middle;
int k = 0;
while (i < middle && j <= end) {
if (nums[i] < nums[j]) {
temp[k] = nums[i];
i ++;
} else {
temp[k] = nums[j];
j ++;
}
k ++;
}
while (i < middle) {
temp[k] = nums[i];
i ++;
k ++;
}
while (j <= end) {
temp[k] = nums[j];
j ++;
k ++;
}
if (end - start >= 0) System.arraycopy(temp, 0, nums, start, end - start + 1);
}