5 9 6 2 4 3
5 9 6 2 4 3
5 9 6 2 4 3
5 9 6 2 4 3
public static void mergeSort(int[] array){
int[] temp=new int[array.length];
mergeSortImpI(array,0,array.length-1,temp);
}
public static void mergeSortImpI(int[] arr,int start,int end,int[] temp){
//1.边界
if (start>=end) return;
int mid=start+(end-start)/2;
mergeSortImpI(arr,start,mid,temp);
mergeSortImpI(arr,mid+1,end,temp);
merge(arr,start,mid,end,temp);
}
public static void merge(int[]arr,int start,int mid,int end,int[]temp){
int left=start;
int right=mid+1;
int index=start;
while (left<=mid&&right<=end){
if (arr[left]<arr[right]) temp[index++]=arr[left++];
else temp[index++]=arr[right++];
}
while (left<=mid){
temp[index++]=arr[left++];
}
while (right<=end){
temp[index++]=arr[right++];
}
for (index=start;index<=end;index++){
arr[index]=temp[index];
}
}
public static void main(String[] args) {
int[]array =new int[10];
for (int i = 0; i < array.length; i++) {
array[i]=(int)(Math.random()*100);
System.out.print(array[i]+",");
}
mergeSort(array);
System.out.println();
for (int num:array){
System.out.print(num+",");
}
}
合并相邻有序子序列
将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8]