js洗牌算法:javascript数组随机打乱顺序的实现方法

时间: 2017-11-20阅读: 1473标签: 算法

有一个数组,我们需要通过js对数组的元素进行随机排序,然后输出,这其实就是洗牌算法,首页需要从元素中随机取一个和第一元进行交换,然后依次类推,直到最后一个元素。


Fisher-Yates算法

function randArr(arr){
	for(var i=0;i<arr.length;i++){
	    var random = Math.floor(Math.random() * (i + 1));
	    [arr[i], arr[random]] = [arr[random], arr[i]];
	}
	return arr;
}

它的实现步骤:生成1-arr.length长度之间的随机数random,把arr[random]和arr[i]的位置交换,然后重复上一步。直到i==arr.length的时候跳出循环。


利用sort排序

function randArr(arr){
	arr.sort(function(){return Math.random()-0.5;});
	return arr;
}

sort排序是在原数组上进行排序,sort的主要思路是根据参数的正负来排序,我们这里取个随机数0~1,这个以0.5为分界线。

注意:sort如果不带参数,默认以“字母顺序”进行排序。


测试:

var arr=['a','b','c'];
console.log(randArr(arr));

我们通过上面2种方法,都实现了数组顺序的随机打乱。



站长推荐

1.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/133

Vue2.x的diff算法记录

为什么在Vue3.0都已经出来这么久了我还要写这篇文章,因为目前自己还在阅读Vue2.x的源码,感觉有所悟。作为一个刚毕业的新人,对Vue框架的整体设计和架构突然有了一点认知,所以才没头没尾地突然写下了diff算法。

Js常用的算法教程

Js常用的算法教程 深度广度、冒泡选择、防抖节流等,函数在调用倒计时n时间内没有重复调用,则执行函数,不然重新倒计时

用 JavaScript 学习算法复杂度

在后面的例子中,我将引用这两个数组,一个包含 5 个元素,另一个包含 50 个元素。我还会用到 JavaScript 中方便的 performance API 来衡量执行时间的差异

js实现分解质因数

定义一个数组,用来存放因数; 定义数组里面数的位置的起始值0;定义分解质因数的函数;如果被分解的数为1、2、3,则直接存入数组,并返回结果

Leetcode 242 有效的字母异位词的三种解法

题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。这个题目比较简单,属于一眼看过去就有思路的那种。我用了三种解法,你也尝试一些别的方法, 拓宽思路。

Js排列组合的实现

犹记得高中数学,组合表示C(m, n),意思为从集合m,选出n个数生成一项,总共有多少个项的可能?组合是无序的,排列是有序的。所以排列的项数量多于组合

Js找出数组中出现次数最多的元素

给定一个数组,找出数组中出现次数最多的元素。给定数组 nums = [3,1,2,1,3,4,3,5,3,6,3], 函数应该返回: 次数最多的元素为:3, 次数为:5

六种排序算法的Js实现

本文将介绍数据排序的基本算法和高级算法。这些算法都只依赖数组来存储数据。数组测试平台首先我们构造一个数组测试平台类,这些算法非常逼真地模拟了人类在现实生活中对数据的排序。

数据结构与算法之绪论

什么是数据结构?简单来说可以解释为:程序设计=数据结构+算法;主要是用来研究数据结构的关系,数据元素之间存在的一种或多种特定关系的集合;

JS排序算法:记数排序

计数排序是一个非基于比较的[排序算法],该算法于1954年由 Harold H. Seward 提出。 它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围), 快于任何比较排序算法。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广