//实现快速排序算法
#include<stdio.h>
#include<malloc.h>
#define MAXE 20
typedef int KeyType;
typedef char InfoType;
typedef struct
{
KeyType key;
InfoType data[10];
}RecType;
void quickSort(RecType r[],int s,int t)//按递增有序进行直接插入排序
{
int i=s,j=t,k;
RecType temp;
if(s<t)
{
temp=r[s];
while(i!=j)
{
while(j>i && r[j].key>temp.key)
j--;
if(i<j)
{
r[i]=r[j];
i++;
}
while(i<j && r[i].key<temp.key)
i++;
if(i<j)
{
r[j]=r[i];
j--;
}
}
r[i]=temp;
printf(" ");
for(k=0;k<10;k++)
if(k==i)
printf("[%d]",r[k].key);
else
printf("%6d",r[k].key);
printf("\n");
quickSort(r,s,i-1);
quickSort(r,i+1,t);
}
}
int main()
{
int i,k,n;
KeyType a[]={6,8,7,9,0,1,2,3,4,5};
n=sizeof(a)/4;
RecType r[MAXE];
for(i=0;i<n;i++)
r[i].key=a[i];
printf("\n");
printf("初始关键词:");
for(k=0;k<n;k++)
printf("%4d",r[k].key);
printf("\n");
printf("\n排序过程:\n");
quickSort(r,0,n-1);
printf("\n最后结果:");
for(k=0;k<n;k++)
printf("%4d",r[k].key);
printf("\n\n");
return 0;
}
数据结构源码笔记(C语言描述)汇总: