插入排序

54 阅读1分钟
Array.prototype.insert = function insert() {
    // 先取出一张牌放到手里
    let _this = this,
        hanlde = [];
    hanlde.push(_this[0]);

    // 开始抓牌
    for (let i = 1; i < _this.length; i++) {
        // A每一次新抓的牌
        let A = _this[i];
        // 和手里的牌进行比较(倒着比较)
        for (let j = hanlde.length - 1; j >= 0; j--) {
            // 要比较的手里这张牌
            let B = hanlde[j];
            // 新抓的牌A比B要大,则放在B的后面
            if (A > B) {
                hanlde.splice(j + 1, 0, A);
                break; //=>没必要和手里的牌继续比较了
            }
            // 都比到最开始,A都没有比任何的牌大,则A是最小的,插入到开始
            if (j === 0) {
                hanlde.unshift(A);
            }
        }
    }

    return hanlde;
};

//时间复杂度是O(n^2)