直接插入排序

来源:互联网 发布:高达最强ma 知乎 编辑:程序博客网 时间:2024/06/11 02:24
#include<stdio.h>    //直接插入排序    //插入排序是把一个记录插入到已排序的有序序列中,使整个序列在插入该记录之后仍然有序    //插入排序中较简单的一种方法就是直接插入排序,其插入位置的确定方法是将待插入的记录    //与有序区的各记录自右向左依次比较其关键字的值的大小,本实例要求使用直接插入排序法将数字    //由小到大进行排序void insort(int s[],int n)    //自定义函数insort{    int i,j,k,count=1;//count计算交换的次数    for(i=2;i<=n;i++)//数组下标从2开始,s[0]做监视哨,s[1]一个数据无可比性    {        s[0]=s[i];   //给监视哨赋值        j=i-1;       //确定要比较元素的最右边的位置        while(s[0]<s[j])        {            s[j+1]=s[j];  //数据右移            j--;          //移向左边的一个未比较的数           /*        //测试结果            printf("第%d次中间结果:\n",count);            for(k=0;k<=10;k++)                printf("%5d",s[k]);            printf("\n");            count++;            */        }        s[j+1]=s[0];     //在确定的位置插入s[i]        printf("第%d次遍历:\n",i-1);        for(k=1;k<=10;k++)            printf("%5d",s[k]);        printf("\n");    }}void main(){    int a[11],i;      //定义数组及变量为基本类型    printf("请输入10个数据:\n");    for(i=1;i<=10;i++)        scanf("%d",&a[i]);    printf("原始顺序:\n");    for(i=1;i<11;i++)        printf("%5d",a[i]);    printf("\n");    insort(a,10);    printf("\n插入数据后排序:\n");    for(i=1;i<11;i++)        printf("%5d",a[i]);    printf("\n");}

end
MrBread 2017-02-07

0 0