JavaScript实现插入排序

35 阅读1分钟

1.基本原理:

把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把他的排序码依次与有序表元素的排序码进行比较,将他插入到有序表的适当位置,使之成为新的有序表。

2.算法:

将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

3.代码解释:

1.从第一个元素开始,该元素可以认为已经被排序。 2.取出下一个元素,在已经排序的元素序列中从后向前扫描。 3.如果该元素(已排序)大于新元素,将该元素移到下一位置。 4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。 5.将新元素插入到该位置后6.重复步骤2-5

4.图演示:

a4121bf01ab5166ff79dbdf6a906e29.jpg

js.gif

代码示范:

        //按照从小到大的顺序排列,先遍历无序数组下标
        for (var i = 1; i < arr.length; i++) {
            //遍历并比较一个无序数组元素与所有有序数组元素
            for (var j = i; j > 0; j--) {
                if (arr[j - 1] > arr[j]) {
                    var temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        console.log(arr);// 输出结果:1,8,10,31,70,87,88,100