快排序算法:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=a[0];
3)从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值a[j],将A[j]的值赋给a[i];
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的a[i],将A[i]的值赋给a[j];
5)重复第3、4步,直到i=j。
代码如下:
void Paixu(int a[], int low, int high)
{
if(low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];/*
while(first < last)
{
while(first < last && a[last] >= key)
{
--last;
}
a[first] = a[last];/*将比第一个小的移到低端*/
while(first < last && a[first] <= key)
{
++first;
}
a[last] = a[first];
/*将比第一个大的移到高端*/
}
a[first] = key;/*枢轴记录到位*/
Paixu(a, low, first-1);
Paixu(a, first+1, high);
}