快速 排序與冒泡排序類型 都是基于交換 但是效率比冒泡排序更高
快速排序思想首先設(shè)定一個分界值 將數(shù)組分成左右兩個部分
將元素小的放在左邊大的放在右邊 然后對左右兩邊進(jìn)行單獨排序 局部有序推到全局有序的過程
下面用代碼說明 用遞歸的方式
public static void quick2(int a[],int low,int high){// 傳值 數(shù)組 開始位置 結(jié)束位置
int lo=low;
int hi=high;
if(lo<hi){
int mid=(a[low]+a[high])/2;//取得中間值
while(lo<hi){
while(lo<high&&a[lo]<mid){ //從后尋找比中間值小的
lo++;
}
while(hi>low&&a[hi]>mid){//從錢尋找比中間值小的
hi--;
}
if(hi>lo){//找到交換
int temp=a[hi];
a[hi]=a[lo];
a[lo]=temp;
}
}
if(hi>low){//對兩邊進(jìn)行單獨排序
quick2(a,low,hi);
}
if(lo<high){
quick2(a,lo,high);
}
}
}