插入法排序

利用数组对任意一组数据进行插入法排序

大家都知道,数组是一种数据结构,它的优势就是能让同一类数据或者说是多个数组元素放在一个数组里,而便于对它们进行操作。数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
<一维数组的定义方式>

类型说明符 数组名 [常量表达式]

<插入法>

插入的基本思想是,从第二个数开始,插入到前面的有序数列里。例如,当我们输入四个数:5、2、4、1,那么从第二个数,也就是2开始,用它与前面的5比较大小,因为2比5小,所以顺序相调,变成了2、5、 4 、1,再让第三个数7与前面的有序数比较,则变成2、4、 5 、1,以此类推就变成了1 、2、4、 5,这样就完成工作啦!
具体代码如下:

#include <stdio.h>

int main(int argc,char *argv[])
{
    int n=6;
    int i=0;
    int j=0;
    int a[j];
    int temp=0;
    

    printf("input your numbers:");
//从键盘上键入五个数到数组所在地址
    for(j=0;j<n;j++)
        scanf("%d",&a[j]);
/*从数组里的第二个数开始,用它与前面的有序数比较,形成从小到大的顺序,对于一组数据的排序,需要循环n-1次,每次
比较j-1次*/
    for(i=1;i<n;i++)
    {
        for(j=i;j>=0;j--)
        {
            if(a[j-1]>=a[j])
            {
                temp=a[j-1];
                a[j-1]=a[j];
                a[j]=temp;          
            }

        }
//输出排好序的顺序
    
    }
        for(j=0;j<n;j++)
        printf("%d\n",a[j]);
        return 0;
}

总结

  • 插入法也是一种经典的排序方法,与冒泡法类似,都是在还未排好序的数字里面选出最小数(其实也可以选出最大的数),最终达到排序的结果;
  • 在用数组作为待处理数据时,要用for循环构架结构数据,同时排好序的数字用函数printf输出时也要用for循环,但是这个循环的位置要注意!(本人把这个输出过程放在了循环体内,这样就会输出n-1次结果,当然只有最后那次是正确的)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 5,356评论 1 4
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,086评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,592评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,027评论 0 2
  • 剽悍晨读:影响数千万人的经营哲学,引领你成就自己,达到人生新高度。 人之所以做当下这一种工作,乃是逢缘而成,在偶然...
    超少阅读 4,145评论 2 10