数据结构与算法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
- 数据结构与算法javascript描述(五) 选择排序
- 数据结构与算法Javascript描述(五)循环链表
- 数据结构与算法javascript描述(四) 冒泡排序
- 《数据结构与算法JavaScript描述》
- 数据结构与算法分析(Java语言描述)(1)—— 选择排序
- 数据结构与算法之五直接选择排序
- 算法与数据结构(五)--希尔排序
- 数据结构与算法-排序与查找(java描述)
- 【数据结构与算法】选择排序
- 数据结构与算法-选择排序
- 数据结构与算法-----选择排序
- 【数据结构与算法】选择排序
- 【数据结构与算法】选择排序
- 数据结构与算法---选择排序
- 算法与数据结构---选择排序
- 数据结构与算法-排序篇-Python描述
- 数据结构与算法-树2-二叉树(javascript描述)
- 数据结构与算法(javascript描述)——2. 数组
- @Controller、@RequestMapping
- 在IOS8及IOS9中使用UILocationNotification本地推送时不显示推送
- Java基础(14):网络编程之socket
- UIPickerView
- Android开源BezierView:仿QQ未读消息99+条的红色气泡
- 数据结构与算法javascript描述(五) 选择排序
- AudioManager的简单使用
- UIDatePicker
- Http基础学习
- Photos框架学习备忘
- [Leetcode]Ugly Number
- TinyOS06:Avrora的Mailing List
- 第一章 项目时间管理的基本概念
- newmat10库的编译