#include<stdio.h>
#define N 7 //定义序列长度为7
int Partition(int *r,int low,int high) //对子表r进行排序,返回枢轴位置
{
int pivotkey;
pivotkey=r[low]; //保存关键字
while(low<high)
{
while(low<high&&r[high]>=pivotkey)
high--;
r[low]=r[high]; //将比枢轴小的,移到前面
while(low<high&&r[low]<=pivotkey)
low++;
r[high]=r[low]; //比枢轴大的,移到后面
}
r[low]=pivotkey;
return low; //返回枢轴位置
}
void QSort(int *r,int low,int high) //对r[]进行快速排序
{
int pivotloc;//枢轴
if(low<high) //子表序列长度>1
{
pivotloc=Partition(r,low,high); //分为两个子表
QSort(r,low,pivotloc-1); //左子表递归
QSort(r,pivotloc+1,high); //右子表递归
}
}
void show(int *r)
{
int i;
for(i=0;i<N;i++)
{
printf("%d ",r[i]);
}
printf("\n");
}
main()
{
int L[N];
printf("输入%d个数,进行快速排序: ",N);
for(int i=0;i<N;i++)
scanf("%d",&L[i]);
QSort(L,0,N-1);
printf("排序后的结果为\n");
show(L);
}
例:
输入7个数,进行快速排序: 7 6 5 0 10 2 14
排序后的结果为
0 2 5 6 7 10 14