插入排序

2018-12-26  本文已影响0人  __越过山丘__

插入排序(insertion sort)比前面两种排序方法都更有效率。它将数组分成“已排序”和“未排序”两部分,一开始的时候,“已排序”的部分只有一个元素,然后将它后面一个元素从“未排序”部分插入“已排序”部分,从而“已排序”部分增加一个元素,“未排序”部分减少一个元素。以此类推,完成全部排序。

以对数组 [3, 2, 4, 5, 1] 进行从小到大排序为例,步骤如下:

代码:

function insertionSort(myArray) {
    var len = myArray && myArray.length,     // 数组的长度
        j;                        // 已排序部分的当前位置
    
    for ( let i = 0; i < len; i++) {
    
        // 储存当前位置的值
        let value = myArray[i];
        
        /*
         * 当已排序部分的当前元素大于value,
         * 就将当前元素向后移一位,再将前一位与value比较
         */
        for (j=i-1; j > -1 && myArray[j] > value; j--) {
            myArray[j+1] = myArray[j];
        }
        myArray[j+1] = value;
    }
    
    return myArray;
}
上一篇下一篇

猜你喜欢

热点阅读