java複習之歸併排序的實現
package learn;
import java.util.Arrays;
/**
* 歸併排序,合併次數爲num-1
*/
public class GBSort {
public static void dis(int[] array,int left,int right,int[] temp){
if(left<right){
int mid=(left+right)/2;
dis(array,left,mid,temp);
dis(array,mid+1,right,temp);
merge(array,left,mid,right,temp);
}
}
public static void merge(int[] array,int left,int mid,int right,int[] temp){
int i=left;
int j=mid+1;
int index=0;
while (i<=mid&&j<=right){
if(array[i]<=array[j]){
temp[index]=array[i];
i++;
index++;
}else{
temp[index]=array[j];
j++;
index++;
}
}
while (i<=mid){
temp[index]=array[i];
i++;
index++;
}
while(j<=right){
temp[index]=array[j];
j++;
index++;
}
int t=0;
for(int k=left;k<=right;k++){
array[k]=temp[t];
t++;
}
}
public static void main(String[] args) {
int[] array = {8,4,5,7,1,3,6,2};
int[] temp=new int[array.length];
dis(array,0,array.length-1,temp);
System.out.println(Arrays.toString(array));
}
}