class Solution {
public int[] sortArray(int[] nums) {
sort(nums);
return nums;
}
public void sort(int[] arr) {
int[] temp = new int[arr.length];
sort(arr,0,arr.length - 1,temp);
}
public void sort(int[] arr,int left,int right,int[] temp) {
if(left < right) {
int mid = (left + right) / 2;
sort(arr,left,mid,temp);
sort(arr,mid + 1,right,temp);
merge(arr,left,right,temp);
}
}
public void merge(int[] arr,int left,int right,int[] temp) {
int i = left;
int count = 0;
int mid = (left + right) / 2;
int j = mid + 1;
while(i <= mid && j <= right) {
if(arr[i] > arr[j]) {
temp[count++] = arr[j++];
} else {
temp[count++] = arr[i++];
}
}
while(i <= mid) {
temp[count++] = arr[i++];
}
while(j <= right) {
temp[count++] = arr[j++];
}
count = 0;
while(left <= right) {
arr[left++] = temp[count++];
}
}
}
归并排序实现
最新推荐文章于 2024-05-31 18:03:22 发布