本文实例讲述了JavaScript数据结构与算法之基本排序算法定义与效率比较。分享给大家供大家参考,具体如下:
javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较
一、数组测试平台
javascript数据结构与算法--基本排序(封装基本数组的操作),封装常规数组操作的函数,比如:插入新数据,显示数组数据,还有交换数组元素等操作来调用不同的排序算法
function CArray(numElements) { this.dataStore = []; this.pos = 0;//是一个索引值,默认为0,从第一个开始 this.numElements = numElements;//是保存所有的数组元素 this.insert = insert;//向数组中插入一个元素的方法 this.toString = toString;//显示数组中所有元素 this.clear = clear;//清空数组数据 this.setData = setData;//生成了存储在数组中的随机数字 this.swap = swap;//交换数组中两个元素的位置 this.bubbleSort = bubbleSort; /*将传入的数组,存储在datastore中*/ for (var i = 0; i < numElements.length; ++i) { this.dataStore[i] = numElements[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;}//测试生成一组数组数据(随机数)var numElements = 100;var myNums = new CArray(numElements);myNums.setData();console.log(myNums.toString());
17 94 81 80 25 24 73 76 24 35 81
63 81 59 4 76 30 47 73 98 18
54 36 53 47 22 60 88 41 66 24
73 94 40 45 72 74 14 61 92 48
36 12 42 11 12 82 24 84 60 1
17 98 63 36 84 13 18 50 89 26
98 1 6 54 52 69 6 52 98 14
79 28 19 69 76 99 97 100 10 7
24 54 81 73 18 21 45 73 66 30
28 56 54 21 88 31 20 86 48
二、冒泡排序算法
我们先来了解一下冒泡排序算法,它是最慢的排序算法之一,但也是一种最容易实现的排序算法。
之所以叫冒泡排序是因为使用这种排序算法排序时,数据值会像气泡一样从数组的一端漂浮到另一端。
假设正在将一组数字按照升序排列,较大的值会浮动到数组的右侧,而较小的值则会浮动到数组的左侧。
之所以会产生这种现象是因为算法会多次在数组中移动,比较相邻的数据,当左侧值大于右侧值时将它们进行互换。
JS代码如下:
新闻热点
疑难解答
图片精选