数据结构与算法javascript描述(五) 选择排序

来源:互联网 发布:java模板t 编辑:程序博客网 时间:2024/06/05 18:12

选择排序从数组的开头开始, 将第一个元素和其他元素进行比较。 检查完所有元素后, 最小的元素会被放到数组的第一个位置, 然后算法会从第二个位置继续。 这个过程一直进行, 当进行到数组的倒数第二个位置时, 所有的数据便完成了排序。

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;    //this.bubbleSort =bubbleSort;    this.selectionSort = selectionSort;    for ( var i = 0; i < numElements; ++i ) {        this.dataStore[i] = i;        }    } 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 retstr = "";    for ( var i = 0; i < this.dataStore.length; ++i ) {            retstr += this.dataStore[i] + " ";            if (i > 0 & i % 10 == 0) {            retstr += "\n";        }    }     return retstr;} 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-2; ++outer){        min = outer;        for (var inner = outer +1;inner  <= this.dataStore.length-1; ++inner){            if(this.dataStore[inner] < this.dataStore[min]){                min = inner;            }          swap(this.dataStore,outer,min);        }    }}

测试

var numElements = 10;var mynums = new CArray(numElements);mynums.setData();console.log(mynums.toString());mynums.selectionSort();console.log();console.log(mynums.toString());

这里写图片描述

1 0
原创粉丝点击