手写代码:
验证:
import java.util.Arrays;
class Solution {
public void function(int[] arr, int start, int end) {
if (start >= end) return;
int mid = (start +end)>>1;
function(arr,start,mid);
function(arr,mid+1,end);
sort(arr,start,mid,end);
}
private void sort(int[] arr, int start, int mid, int end) {
int[] temp = new int[end - start + 1];
int i = start,j=mid+1,k=0;
while(i<= mid && j<= end){
if(arr[i] <= arr[j]){
temp[k++] = arr[i++];
}else{
temp[k++] = arr[j++];
}
}
while(i<=mid){
temp[k++] = arr[i++];
}
while(j<=end){
temp[k++] = arr[j++];
}
for(int n = 0;n<temp.length;n++){
arr[n+start] = temp[n];
}
}
public static void main(String[] args) {
int[] arr = new int[]{1,3,2,0,0,0,-1,-1,6,7,8,6,7};
new Solution().function(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
}
执行结果:
[-1, -1, 0, 0, 0, 1, 2, 3, 6, 6, 7, 7, 8]
Process finished with exit code 0