Day2------直接插入排序

直接插入排序算法的思路是:初始认为文件中的第一个记录已排好序,然后将剩余的元素依次有序地插入到已排好序的记录组成的文件中。

具体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;
}

猜你喜欢

转载自blog.csdn.net/weixin_40552964/article/details/80978007