你插入排序使用数组0作为交换数据临时变量,这不和规矩,稍作修改后可对全数组进行插入排序,代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int key;
}DataType;
int Direct_Insert_sort(DataType R[],int n)
{
int i,j;
DataType t;
for(i=1;i<n;++i)
{
if(R[i].key<R[i-1].key)
{
t=R[i];
for(j=i-1;t.key<R[j].key&&j>=0;j--)R[j+1]=R[j];
R[j+1]=t;
}
}
return 0;
}
void main ()
{
DataType data[10];
int i;
for(i=0;i<10;i++)data[i].key=rand()%100;//产生10个随机数
for(i=0;i<10;i++)printf("%2d ",data[i].key);//显示原始的10个数
printf("\n");
Direct_Insert_sort(data,10);//插入排序
for(i=0;i<10;i++)printf("%2d ",data[i].key);//显示排序后的数据
printf("\n");
}