快速排序是一种很厉害的排序算法,但是它的基本原理很简单,只需要记住它的三个主要步骤:
1. 首先在一组数中随便取一个作为基准数。
2. 在这组数中找到基准数要呆的正确位置,也就是把比它大的数都放在它的右边,把比它小的数放在它的右边。
3. 然后我们只需要对上个基准数左右两边的混乱数列分别进行上面的操作,并且不断进行下去,最后便可以找到每一个数字的正确位置啦!
void quiksort(int a[],int left,int right)
{
int i,j,t,h;
if(left > right)
return;
t = a[left];//t存的是基准数字
i = left;
j = right;
while(i != j)
{
while(a[j] > t && i < j) //从右往左找比基准数小的数
j--;
while(a[i] < t && i < j) //从左往右找比基准数大的数
i++;
if(i < j)//在左右指针没有相遇的时候,交换找到的两个数字
{
h = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];//最后将基准数归位
a[i] = t;
quicksort(left,i-1);//递归排序左边的数
quicksort(i+1,right);//递归排序右边的数
return;
}