直接插入排序算法的思路是:初始认为文件中的第一个记录已排好序,然后将剩余的元素依次有序地插入到已排好序的记录组成的文件中。
具体C语言代码实现:
#include <stdio.h>
#include <time.h>
#define N 11
void display(int a[],int n) //打印数组的内容
{
int i;
printf("\n数组内容为:");
for(i=0;i<n;i++)
printf("%-5d",a[i]);
}
void sort(int a[],int n)
{
int i,j;
for(i=2;i<n;i++)
{
a[0]=a[i];
j=i-1;
while(a[0]<a[j]) //注意此处0不可更换为i,a[i]的值会发生改变,我也正在思考原因,如果知道的朋友可以留言告诉我
{
a[j+1]=a[j];
j--;
}
a[j+1]=a[0];
}
}
int main()
{
int a[N];
int i;
srand(time(0));
a[0]=0; //将标记初始化为0
for(i=1;i<N;i++)
a[i]=rand()%100+1; //随机生成数组中的元素
display(a,N);
sort(a,N);
display(a,N);
return 0;
}