代码:
#include<iostream>
using namespace std;
#define MAXSIZE 20//顺序表的最大长度
typedef int KeyType;//定义关键字类型为整型
typedef int InfoType;
typedef struct
{
KeyType key;//关键字项
InfoType otherinfo;//其他数据项
}RedType;
typedef struct
{
RedType r[MAXSIZE+1];//r[0]闲置或做哨兵单元
int length;//顺序表的长度
}SqList;//顺序表类型
int Partition(SqList &L,int low,int high)//对顺序表L中的子表r[low..high]进行一趟排序,返回枢轴位置
{
KeyType pivotkey;
L.r[0]=L.r[low];//用子表的第一个记录作枢轴记录
pivotkey=L.r[low].key;//枢轴记录关键字保存在pivotkey中
while(low<high)//从表的两端交替地向中间扫描
{
while(low<high&&L.r[high].key>=pivotkey)
--high;
L.r[low]=L.r[high];//将比枢轴记录小的记录移到低端
while(low<high&&L.r[low].key<=pivotkey)
++low;
L.r[h