#include<stdio.h>
#include<math.h>
//打印函数
void display(int array[],int maxlen)
{
int i;
for(i=0 ; i<maxlen ; i++)
{
printf("%d ",array[i]);
}
printf("\n");
return;
}
//交换函数
void swap(int *a,int *b)
{
int temp;
temp= *a;
*a= *b;
*b= temp;
return;
}
//快速排序算法
void QSort(int array[], int begin, int end)
{
int i,j;
display(array,end+1);
if(begin < end)
{
i= begin+1; //将array[begin]作为基准数
j= end; //array[end]是数组最后一位
while(i < j)
{
if(array[i] > array[begin])
{
swap(&array[i],&array[j]); //如果该元素大于基准数,则交换位置
j--;
}
else
{
i++; //继续比较
}
}
//跳出后i=j
if(array[i] >= array[begin]) //特殊情况
{
i--;
}
swap(&array[begin],&array[i]); //将基准数换至分界点
QSort(array,begin,i); //继续排序,以此类推,直到begin == i,j == end
QSort(array,j,end); //或者说直到第二第三两个参数相等
}
}
//主函数
main()
{
int array[10]; //数组长度可改变
int maxlen,i;
printf("Input 10 number:\n");
for(i=0 ; i<10 ; i++)
{
scanf("%d",&array[i]);
}
maxlen=10; //快速排序
QSort(array,0,maxlen-1);
printf("Positive sequence alignment:\n");
display(array,maxlen);
}