作者 张鏖烽
单位 湖南工程学院计算机与通信学院
编程实现快速排序算法函数:FastSort(L,s,t);//用快速排序算法对顺序表中关键字序列进行递增排序,并输出每一次排序结果。
函数接口定义:
在这里描述函数接口。例如:
int position(SqList *&L,int s,int t);//第一个元素为基准对数据[s,t]进行划分(填充法)
void FastSort(SqList *&L,int s,int t);//快速排序算法
其中L为顺序表,存储待排序关键字序列,s为序列起始下标,t为终止下标;
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include<malloc.h>
#define MaxSize 100
//定义顺序表
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
int length;
}SqList;
void Display(SqList *L)//输出 顺序表
{ int i;
for(i=0;i<L->length;i++)
printf("%d ",L->data[i]);
}
int position(SqList *&L,int s,int t);//第一个元素为基准对数据[s,t]进行划分(填充法)
void FastSort(SqList *&L,int s,int t);//快速递增排序算法
int main()
{ SqList *L;
L=(SqList *)malloc(sizeof(SqList));
int n,i;
printf("请输入待排序关键字序列长度n:");
scanf("%d",&n);
L->length=n;
printf("请输入%d个关键字:",n);
for(i=0;i<L->length;i++)
scanf("%d",&L->data[i]);
FastSort(L,0,L->length-1);
return 0;
}
/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
10
5 3 2 6 8 7 0 9 1 4
输出样例:
在这里给出相应的输出。例如:
快速排序过程如下:
4 3 2 1 0 5 7 9 8 6
0 3 2 1 4 5 7 9 8 6
0 3 2 1 4 5 7 9 8 6
0 1 2 3 4 5 7 9 8 6
0 1 2 3 4 5 7 9 8 6
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
参考代码:
int position(SqList *&L,int s,int t){
ElemType pivot=L->data[s];
int i=s,j=t;
while(i<j){
while(i<j && L->data[j]>=pivot)
j--;
if(i<j){
L->data[i]=L->data[j];
i++;
}
while(i<j && L->data[i]<=pivot)
i++;
if(i<j){
L->data[j]=L->data[i];
j--;
}
}
L->data[i]=pivot;
return i;
}
void FastSort(SqList *&L,int s,int t){
static int c=1;
if(s<t){
int pos=position(L,s,t);
Display(L);
c++;
FastSort(L,s,pos-1);
FastSort(L,pos+1,t);
}
}
313

被折叠的 条评论
为什么被折叠?



