js数组的顺序排序、完全随机打乱排序 总结

您所在的位置:网站首页 随机打乱顺序算法 js数组的顺序排序、完全随机打乱排序 总结

js数组的顺序排序、完全随机打乱排序 总结

2023-06-12 01:06| 来源: 网络整理| 查看: 265

一、顺序排序

1、按字符编码排序:sort()

var testArray=[23,500,1000,300,34,-2]; testArray.sort(); alert(testArray); //-2,1000,23,300,34,500 复制代码

2、将数组元素倒序排:reverse()

var testArray=[-2,53,34,300,500,1000]; testArray.reverse(); alert(testArray); //1000,500,300,34,53,-2 复制代码

3、在sort()里面加个比较函数(从小到大排)

var testArray=[23,500,1000,300,34,-2]; //传给sort一个比较函数,如果比较函数return值小于0,则表示a必须出现在b前面,否则在b后面。 testArray.sort(function(a,b){return a-b;}); alert(testArray); //-2,23,34,300,500,1000 复制代码

4、快速排序 效率相比上面的方法最高。 看不懂下面代码的话可以参考:快速排序(Quicksort)的Javascript实现

var testArray=['df', 'rtr', 'wy', 'dafd', 'dfs', 'wefa', 'tyr', 'rty', 'rty', 'ryt', 'afds', 'wer', 'te']; var testArray2=[23,500,1000,300,34,-2]; //快速排序函数 var quickSort = function(arr) {   if (arr.length 0.5?-1:1;}); alert(testArray); //结果不唯一 复制代码

2、高效版: (1)洗牌算法: 这种方法打乱10000个元素的数组来测试仅需要7,8毫秒的时间。

var testArray=[-2,23,34,300,500,1000]; if (!Array.prototype.derangedArray) { Array.prototype.derangedArray = function() { for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x); return this; }; } alert(testArray.derangedArray());//结果不唯一 复制代码

(2)这个简单明了,且复杂度为 O(n)

function shuffle(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { var index = parseInt(Math.random() * (len - i)); var temp = arr[index]; arr[index] = arr[len - i - 1]; arr[len - i - 1] = temp; } return arr; } var arr = [-2,1,3,4,5,6,7,8,9]; console.log(shuffle(arr));//结果不唯一 复制代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3