快速排序的大致思想就是:
先找出一个基准数,然后以它为基准进行排序,把比它小的数放在左边,比它大的数放在右边。
然后利用递归思想,在两边反复进行上面这个操作就可以了。
实际操作可以看一下下面的函数。
下面就是快速排序法的函数:
void ksort(int *arr,int left,int right)
{
if(left>right)
return;
int t=arr[left];//先设第一个数为基准数
int i=left,j=right;//
while(j!=i)//进行多次循环直到i与j相遇
{
while(arr[i]<=t)//让i从左往右走,直到找到比基准数大的数后停下
i++;
while(arr[j]>=t)//让j从右往左走,直到找到比基准数小的数后停下
j--;
if(j>i)
{
int m=arr[i];//让两个数交换
arr[i]=arr[j];
arr[j]=m;
}
}//循环结束后让i与j相遇的数与基准数交换位置,由此可使基准数左边都是比它小的数,其右边都是比它大的数
arr[left]=arr[i];
arr[i]=t;
ksort(arr,left,i-1);//使用递归的方法在基准数两边反复进行快速排序,最终完成排序
ksort(arr,i+1,right);
}