c语言数组洗牌算法,JavaScript实现shuffle数组洗牌操作示例

本文实例讲述了JavaScript实现shuffle数组洗牌操作。分享给大家供大家参考,具体如下:

/p>

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

JavaScript shuffle数组洗牌

function createArray(max) {

const arr = [];

for(let i = 0; i < max; i++) {

arr.push(i);

}

return arr;

}

function shuffleSort(arr) {

arr.sort(()=> {

//返回值大于0,表示需要交换;小于等于0表示不需要交换

return Math.random() > .5 ? -1 : 1;

});

return arr;

}

function shuffleSwap(arr) {

if(arr.length == 1) return arr;

//正向思路

// for(let i = 0, n = arr.length; i < arr.length - 1; i++, n--) {

// let j = i + Math.floor(Math.random() * n);

//逆向思路

let i = arr.length;

while(--i > 1) {

//Math.floor 和 parseInt 和 >>>0 和 ~~ 效果一样都是取整

let j = Math.floor(Math.random() * (i+1));

/*

//原始写法

let tmp = arr[i];

arr[i] = arr[j];

arr[j] = tmp;

*/

//es6的写法

[arr[i], arr[j]] = [arr[j], arr[i]];

}

return arr;

}

function wrap(fn, max) {

const startTime = new Date().getTime();

const arr = createArray(max);

const result = fn(arr);

const endTime = new Date().getTime();

const cost = endTime - startTime;

console.log(arr);

console.log("cost : " + cost);

}

wrap(shuffleSort, 1000);

wrap(shuffleSwap, 1000);//试验证明这种方法比第一种效率高多了

这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:

e2070cc7cc639782d73748f215284734.png

希望本文所述对大家JavaScript程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值