排序算法1--插入排序--直接插入排序

Posted 张小雪、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法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 />")

 

以上是关于排序算法1--插入排序--直接插入排序的主要内容,如果未能解决你的问题,请参考以下文章

七大排序算法

排序算法-直接插入排序

排序算法 直接插入排序及改进

Java算法 直接插入排序 -- 直接插入排序算法的非递归和递归形式实现

排序算法——直接插入排序

经典排序算法 – 插入排序Insertion sort