// 对低子表递归排序, pivotloc 是枢轴位置 QSort(L,pivotloc+1,high);// 对高子表递归排序}} void QuickSort(SqList &L) {// 对顺序表 L 做快速排序 QSort(L,1,L.length); } void SelectSort(SqList &L) {// 对顺序表 L 作简单选择排序 int i,j,k; for(i=1;i<L.length;i++)// 选择第 i 小的记录,并交换到位{ k=i; for(j=i+1;j<L.length;j++)// 在 L.r[i … L.length] 中选择 key 最小的记录{ if(L.r[j].key<L.r[k].key) { k=j; } } if(i!=k)// 与第 i 个记录交换{ L.r[0].key=L.r[i].key; L.r[i].key=L.r[k].key; L.r[k].key=L.r[0].key; }}} void OutPut(SqList L)// 输出顺序表{ int i; for(i=1;i<=L.length;i++) { printf("%d ",L.r[i].key); } printf("\n"); } void main()// 主程序{ SqList L; InPut(L);// 创建线性表 L printf(" 插入排序法:\n"); InsertSort(L);// 对L 进行插入排序 OutPut(L);// 输出线性表 L printf(" 交换排序法:\n"); QuickSort(L);// 对L 进行交换排序 OutPut(L);// 输出线性表 L printf(" 选择排序法:\n"); SelectSort(L);// 对L 进行选择排序 OutPut(L);// 输出线性表 L }