题目:对于给定的无序序列,请使用快速排序方法进行排序,并且输出每趟排序结果。
#include<stdio.h>
#include<time.h>
#define size 11
typedef char datatype;
typedef struct
{
int key;
datatype others;
} sort;
int partition(sort a[],int i,int j)
{
sort t;
t=a[i]; //t为基准
do
{
while((a[j].key>=t.key)&&(i<j))j--; //当a[j]的值大于基准,则j左移直至a[j]的值小于基准
if(i<j)a[i++]=a[j]; //当i小于j时a[i]=a[j],之后i右移一位
while((a[i].key<=t.key)&&(i<j))i++; //当a[i]的值小于基准,则j右移直至a[j]的值大于基准
if(i<j)a[j--]=a[i]; //当i小于j时a[j]=a[i],之后i左移一位
}
while(i!=j);
a[i]=t; //a[i]即为基准值
return i;
}
void quicksort(sort a[],int s,int q)
{
int i;
if(s<q)
{
i=partition(a,s,q);
quicksort(a,s,i-1); //对i左侧的未排序区进行排序