快速排序算法
2017-10-15 本文已影响0人
意浅离殇
快速 排序与冒泡排序类型 都是基于交换 但是效率比冒泡排序更高
快速排序思想首先设定一个分界值 将数组分成左右两个部分
将元素小的放在左边大的放在右边 然后对左右两边进行单独排序 局部有序推到全局有序的过程
下面用代码说明 用递归的方式
public static void quick2(int a[],int low,int high){// 传值 数组 开始位置 结束位置
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){//对两边进行单独排序
quick2(a,low,hi);
}
if(lo<high){
quick2(a,lo,high);
}
}
}