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; i<numElements; ++i) {
        this.dataStore[i] = i;
    }
    this.selectionSort = selectionSort;
}
//生成随机数
function setData() {
    for (var i=0; i<this.numElements; ++i) {
        this.dataStore[i] = Math.floor(Math.random() * (this.numElements +1))
    }
}
//清除所有数据
function clear() {
    for(var i=0; i<this.dataStore.length; i++) {
        this.dataStore[i] = 0;
    }
}
//插入数据
function insert(element) {
    this.dataStore[this.pos++] = element;
}
//显示数据
function toString() {
    var restr = "";
    for (var i=0; i<this.dataStore.length; i++) {
        restr += this.dataStore[i] + " ";
        if (i >0 && i % 10 == 10) {
            restr += "\n";
        }
    }
    return restr;
}
//交换数组元素
function swap(arr,index1,index2) {
    var temp = arr[index1];
    arr[index1] = arr[index2];
    arr[index2] = temp;
}
//首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,
// 然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕
function selectionSort() {
    var min, temp;
    for (var outer = 0; outer < this.dataStore.length-1; outer++) {
        min = outer;
        for (var inner = outer + 1; inner < this.dataStore.length; inner++) {
            if (this.dataStore[inner] < this.dataStore[min]) {
                min = inner;
            }
        }
        swap(this.dataStore, outer, min);
    }
}

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




猜你喜欢

转载自blog.csdn.net/qq_35014708/article/details/89213833