快速排序
快速排序的核心思想如下:
- 找到一个数x
- 遍历x的左边,找到左边第一个比x大的数b
- 遍历x的右边,找到右边第一个比x小的数c
- 交换b,c
- 重复以上过程,直到左右指针相遇
- 结束后,以右指针(右指针前比x小,右指针后比x大)为划分点,递归调用
void quicksort(int q[],int l,int r)
{
if(l>=r)return;
int x=(r+l)/2,i=l-1.j=r+1;
while(i<j)
{
do i++;while(q[i]<q[x]);
do j--;while(q[j]>q[x];
if(i<j)swap(q[i],q[j];
}
quicksort(q,l,j);
quciksort(q,j+1,l);
}