//实现直接插入排序算法
#include<stdio.h>
#include<malloc.h>
#define MAXE 20
typedef int KeyType;
typedef char InfoType;
typedef struct
{
KeyType key;
InfoType data[10];
}RecType;
void InsertSort(RecType r[],int n)//按递增有序进行直接插入排序
{
int i,j,k;
RecType temp;
for(i=1;i<n;i++)
{
temp=r[i];
j=i-1; //从右向左在有序r[ ] 中查找r[i]的插入位置
while(j>=0&&temp.key<r[j].key)
{
r[j+1]=r[j]; //将关键字大于 r [i].key的记录后移
j--;
}
r[j+1]=temp; //在 j+1处插入 r[i]
printf(" i=%d",i);//输出每一趟的排序结果
for(k=0;k<n;k++)
printf("%4d",r[k].key);
printf("\n");
}
}
int main()
{
int i,k,n;
KeyType a[]={10,9,8,7,6,5,4,3,2,1,0};
RecType r[MAXE];
n=sizeof(a)/4;
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");
InsertSort(r,n);
printf("最后结果:");
for(k=0;k<n;k++)
printf("%4d",r[k].key);
printf("\n\n");
return 0;
}
数据结构源码笔记(C语言描述)汇总: