快速排序代码优化
因为我们知道快速排序从小到大输出在逆序时的时间复杂度时O(^2) 所以我们对快速排序进行优化
原理:
普通的快排上一篇文章我们讲到过,是取左边第一个值进行作为基准值,然后一直替换
优化后的原理是取中间的值,然后左右先互相替换,最后放入基准值
void quick_sort_change(int *num,int l,int r ){
while(l < r){
int x = l , y = r ,z=num[(l + r) >> 1];
do{
while(num[x] < z) x++;
while(num[y] > z) y--;
if(x <=y){
int test=num[y];
num[y]=num[x];
num[x]=test;
x++;
y--;
}
} while(x <= y );
quick_sort_change(num , x , r );
r=y;
}
return ;
}