zoukankan      html  css  js  c++  java
  • 插入排序

    插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
    把一个数据插入到有序序列中使之仍然有序,但是有序序列长度逐渐增长,
    第一次把第一个数当有序 序列 ,拿出第二个数 插入
    以此类推

    概括为挖坑-逆序比较-后移-填坑

    开始,i=1,j=0,temp=a[i],把a[0]当成第一个长度为1的有序序列,取出待插入数(a[1]从第二个开始)放到一边去(存到temp中),也就挖了一个坑出来,开始从后往前与temp比较
    大于temp ,a[j]后移(此时坑位也向前移动了一个位置)记录坑位,再与j前面的j-1比较,直至j=0或temp>a[j]为止,将temp插入填坑
    关键字 : 挖坑 - 倒序比较-后移-记录坑位置-填坑
    代码思路
    先把第一个数当成 一个长度为1的有序序列,取出第二个数,现在空位是位置2,然后从后往前开始比较,若取出来的数小于被比较数则被比较数后移,然后被比较熟换成它前面的一个数继续比较
    //1确定插入位置, 2后移, class insertOrder:order { private int[] a; private int Local = 0; //记录插入位置 private int temp = 0,i=0,j=0; public insertOrder(int[] b) { a = b; } public int[] orderBy() { for (i = 1; i < a.Length;i++ ) { temp = a[i]; //把a[i] 取出来, 从第二个记录开始 for ( j = i-1 ; j >= 0 && (temp < a[j]); j--) { a[j + 1] = a[j];//后移 Local = j;//记录需要插入位置,记录坑位 } a[Local] = temp;//插入 } return a; } }
  • 相关阅读:
    Ubuntu 14.04上架IPSec+L2TP的方法
    Windows Server 2008 R2 FTP无法从外部访问的解决方法
    在Windows Server 2008 R2上打开ping的方法
    全站导航
    拉勾网招聘信息分析
    pandas之DataFrame
    pandas之Series
    matplolib学习
    numpy学习
    scrapy框架【爬虫的暂停和启动】
  • 原文地址:https://www.cnblogs.com/wangjian920110/p/5436596.html
Copyright © 2011-2022 走看看