参照《数据结构》(C语言版)严蔚敏
#include <iostream.h>
struct SqList
{
int r[100];
int length;
};
int Partition(SqList &L, int low, int high)
{
int pivotKey=L.r[low];
L.r[0]=pivotKey;
while(low<high)
{
while(low<high && L.r[high]>=pivotKey)
high--;
L.r[low]=L.r[high];
while(low<high && L.r[low]<=pivotKey)
low++;
L.r[high]=L.r[low];
};
L.r[low]=L.r[0];
return low;
}
void QSort(SqList &L, int low, int high)
{
int pivotLoc=Partition(L, low, high);
if(low < high)
{
QSort(L,low,pivotLoc-1);
QSort(L,pivotLoc+1, high);
}
}
int main()
{
SqList L;
L.r[1]=49;
L.r[2]=38;
L.r[3]=65;
L.r[4]=97;
L.r[5]=76;
L.r[6]=13;
L.r[7]=27;
L.r[8]=49;
L.length=8;
QSort(L,1,L.length);
for(int i=1;i<=L.length;i++)
{
cout << L.r[i] << " ";
}
cout << endl;
return 0;
}
运行结果: