js 插入排序

插入排序有两个循环,外循环数组元素挨个移动,而内循环和外循环选中的元素进行比较。如果外循环中选中的元素比内循环选中的元素要小,那么数组整体会向右移动,为内循环的这个元素腾出位置。(将较大数组向右移动,为数组较小元素腾出位置。)

function CArray(numElements) {
    this.dataStore = [];
    this.pos = 0;
    this.numElements = numElements;
    this.insert = insert;
    this.toString = toString;
    this.clear = clear;
    this.setData = setData;
    this.swap = swap;
    for (var i=0; i0 && i % 10 == 10) {
            restr += "\n";
        }
    }
    return restr;
}
//交换数组元素
function swap(arr,index1,index2) {
    var temp = arr[index1];
    arr[index1] = arr[index2];
    arr[index2] = temp;
}

function insertionSort() {
    var temp,inner;
    for (var outer=0; outer0 && (this.dataStore[inner - 1] >= temp)) { //如果内循环(inner - 1)元素大于外循环选中元素(当前插入元素),
            this.dataStore[inner] = this.dataStore[inner - 1]; //(当前元素等于前一个元素,数组整体向右移动),直到内循环元素小于插入元素,当前内循环元素等于插入元素
            --inner;
        }
        this.dataStore[inner] = temp;
    }
}

var numElements = 10;
var myNums = new CArray(numElements);
//生成10个随机数
myNums.setData();
//打印随机数
console.log(myNums.toString());
//插入排序
myNums.insertionSort();
//打印排序后的值
console.log(myNums.toString());




 

你可能感兴趣的:(js,数据结构与算法,js数据结构与算法)