快速排序是一种就地排序的算法,它是基于分治法而实现的。
代码实现(C语言)
static int partition(int * const p,int start,int end){
/**
i的起始值为start-1
j的起始值为start
*/
int i = start -1,j=start;
int cmpkey = *(p + end);
int swap = 0;
while(j < end){
if(*(p + j) < cmpkey){
i++;
swap = *(p + i);
*(p + i) = *(p + j);
*(p + j) = swap;
}
j++;
}
swap = *(p + i +1);
*(p + i +1) = *(p + end);
*(p + end) = swap;
return i+1;
}
void quick_sort(int * const p,int start,int end){
if( start < end ){
int q = partition(p,start,end);
quick_sort(p,start,q - 1);
quick_sort(p,q +1 ,end);
}
}