插入排序

插人排序每次排一个数组项,以此方式构建最后的排序数组。假定第一项已经排序了,接着, 它和第二项进行比较,第二项是应该待在原位还是插到第一项之前呢?这样,头两项就已正确排 序,接着和第三项比较(它是该插人到第一、第二还是第三的位置呢?),以此类推。


Array.prototype.insertionSort = function() {
    let j;
    let temp;
    for (let i = 1; i < this.length; i++) {
        j = i; //2
        temp = this[i]; //temp => [2]

        while (j > 0 && this[j - 1] > temp) {
        this[j] = this[j - 1]; //this[2] => this[1]
        console.log(j);
        j--;
        }
        this[j] = temp; //this[1] =>[2]
        console.log(this.join(", "));
    }
    return this;
    };


    function insertionSort(arr) {
        let len = arr.length;
        for (let i = 1; i < len; i++) {

            for (let j = i; j > 0; j--) {
            if (arr[j] < arr[j - 1]) {
                let temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;
            } else {
                break;
            }
            }

        }
        return arr;
    }