作业:以关键字序列{48,62,35,77,55,14,35,98}为例说明完成直接插入排序的算法思想及排序过程,并说明此算法是一种稳定的算法。编程实现此排序(用email上交)。
/*------使用直接插入排序法实现一组数据的排序------*/
#include <stdlib.h>
#include <stdio.h>
#define MAX 8 /*最大数组容量*/
typedef struct
{
int r[MAX+1]; /*r[0]为工作单元*/
int length;
}recordlist;
/*输入一组数据*/
void input(recordlist *l)
{
int i;
l->length=MAX;
printf("\nPlease input numbers:\n");
for(i=1;i<=MAX;i++)
scanf("%d",&l->r);
printf("\n");
printf("\nThe numbers before taxis:");
for(i=1;i<MAX+1;i++)
printf("%d ",l->r);
}
/*直接插入排序*/
void inssort(recordlist *l)
{
int i,j;
l->length=MAX;
for(i=2;i<MAX+1;i++)
{
l->r[0]=l->r;j=i-1;
while(l->r[0]<l->r[j])
{
l->r[j+1]=l->r[j];j=j-1;
}
l->r[j+1]=l->r[0];
}
printf("\n");
printf("\nThe numbers after taxis:");
for(i=1;i<MAX+1;i++)
printf("%d ",l->r);
}
void main()
{
recordlist *l;
input(&l);/*输入一组数据*/
inssort(&l);/*将输入的那组数据进行直接插入排序*/
printf("\n");
exit(0);/*终止程序*/
}