zoukankan      html  css  js  c++  java
  • 排序算法1--插入排序--直接插入排序

    直接插入排序:

    在日常生活中,经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。

    例如:一组从小到大排好顺序的数据列{1,2,3,4,5,6,7,9,10},通常称之为有序列,我们用序号1,2,3,…表示数据的位置,欲把一个新的数据8插入到上述序列中。

    完成这个工作的步骤:
    ①确定数据“8”在原有序列中应该占有的位置序号。数据“8”所处的位置应满足小于或等于该位置右边所有的数据,大于其左边位置上所有的数据。
    ②将这个位置空出来,将数据“8”插进去。
     
    直接插入排序(straight insertion sort)的做法是:
    每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。
     
    例如:
    原有序表:(9 15 23 28 37) 20
    找插入位置 : (9 15 ^ 23 28 37) 20
    新有序表: (9 15 20 23 28 37)
     
    java实现:
     1 package 平时常用;
     2 public class _1直接插入排序 {
     3     public static void main(String[] args) {
     4         int a[]={3,5,6,2,4,1};
     5         for(int i=1;i<a.length;i++){
     6             if (a[i] <a[i-1]) {//如果发生逆序,往前插入
     7                 int j,temp;
     8                 temp=a[i];
     9                 for(j=i-1;j>=0&&temp<a[j];j--){
    10                     a[j+1]=a[j];                       //将大于temp的值整体后移一个单位
    11                 }
    12                 //插入到指定的位置
    13                 a[j+1]=temp;
    14                 
    15             }
    16         }
    17 
    18         for(int i=0;i<a.length;i++){
    19            System.out.print(a[i]);
    20         }
    21     }
    22 }
     
     
    js实现:
     1 function zhijieInsertSort(a){
     2     var i,j,temp;
     3     for (i = 1;i<a.length;i++) {
     4         if (a[i] <a[i-1]) {//如果发生逆序,往前插入
     5             temp = a[i];
     6             for (j = i-1;j>=0&&a[j]>temp;j--) {
     7                 a[j+1] = a[j];
     8             }
     9             a[j+1] = temp;
    10         }
    11     }
    12 }
    13 var a = new Array(7,2,6,5,1,4,3);
    14 zhijieInsertSort(a);
    15 document.write("_1直接插入排序"+a+"<br />")

    python实现:

     1 def insert_sort(listNums):
     2     length = len(listNums)
     3     for i in range(1,length):
     4         key = listNums[i]
     5         j = i-1
     6         while j>=0:
     7             #比较  进行插入排序
     8             if listNums[j] > key:
     9                 listNums[j+1] = listNums[j]      #整体后移
    10                 listNums[j] = key
    11             j = j-1
    12     return listNums
  • 相关阅读:
    TFS2010安装方法及序列号
    SQL2005还原数据库3154错误
    HTML5 离线开发
    服务器缓存不依赖URL的方法(OutPutCache)及客户端不缓存,完美做法
    TFS2010映射工作区问题 路径 XXX 已在工作区 XXX;XXX 中映射
    解决:DropDownList的AutoPostBack=True不能触发SelectedIndexChanged事件
    SQL Server 2008 R2 RTM (32&64) 中文版 下载地址&序列号
    window.open 详解
    ADO.NET Entity Framework Extensions 示例应用
    Partial Output Caching in ASP.NET MVC
  • 原文地址:https://www.cnblogs.com/zhangxue521/p/6748120.html
Copyright © 2011-2022 走看看