上篇文章說的是快速排序盔性,這篇文章將歸并排序痴奏。
歸并排序和快速排序的思路有類似的地方,都是二分思想+遞歸調(diào)用的思路和泌。但歸并排序的核心技巧是兩個(gè)有序數(shù)組的合并,快速排序的核心在于找到中間元素并使左邊的元素小于中間元素祠肥,右邊元素大于或等于中間元素武氓。下面是練習(xí)代碼
public class GuibinSort {
public static void main(String[] args){
int[] arrs = {12,3,5,1,7,5,44,80};
gbsort(arrs,0,arrs.length-1);
for (int b : arrs){
System.out.print(b + "," );
}
}
public static void gbsort(int[] arrs,int low,int high){
if(low==high){
return;
}
int mid = low + (high-low)/2;
gbsort(arrs,low,mid);
gbsort(arrs,mid+1,high);
//兩個(gè)排序數(shù)組合并,這里是核心思想仇箱,使用兩個(gè)指針
int j=mid+1;
int i=low;
int[] clone = arrs.clone();
for(int k=low;k<=high;k++){
if(i>mid && j<=high){
arrs[k] = clone[j++];
continue;
}
if(j>high && i<=mid){
arrs[k] = clone[i++];
continue;
}
if(clone[i]>clone[j]){
arrs[k] = clone[j++];
continue;
}
arrs[k] = clone[i++];
}
}
}