查看: 2470|回复: 0
打印 上一主题 下一主题

九种基本的数值排序算法之二:插入排序

[复制链接]
跳转到指定楼层
沙发
发表于 2018-3-28 19:56:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
二更
插入排序—直接插入排序(Straight Insertion Sort)所谓插入排序,就是依次将新的排序数插入到一个已经排好顺序的有序序列最后再将整个有序序列输出程序设计思路:
从大到小为例,将第一个被输入的排序数看作是一个有序序列,之后新来入的排序数存入序列的最后,往前依次跟每个相邻元素比较,若新来的数值大,交换它们的值。
所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。


范例
#include<stdio.h>
        void sort()
        {               
                int i=1,amount,m,k;
       
                        printf("需要排序的数字的总数:");
                        scanf("%d",&amount);
                        int sort[amount];
                        printf("输入排序数,请在键入每个数值后按空格键确认输入\n在这里输入您需要排序的数:");
                        scanf("%d",&sort[0]);
                        while(i<amount)
                        {       
                                printf("\n");
                                scanf("%d",&sort);
                                for(k=i;k>=0;k--)
                                {       
                                        if (sort[k]<sort[k-1])//比较两个相邻元素
                                        {       
                                                m=sort[k-1];
                                                sort[k-1]=sort[k];
                                                sort[k]=m;       
                                        }       
                                        else
                                                break;
                                }
                                i++;               
                        }        
                        printf("您输入的所有数值,按从小到大的方式排序结果为:");
                               
                        for(i=0;i<amount;i++)
                        {       
                                printf("%d ",sort);        
                        }
        }
        void main()
        {       
                sort();
        }



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表