第90天 写个方法随机打乱一个数组
Activity
ghost commentedon Jul 14, 2019
两个思路
liuxiaole commentedon Jul 14, 2019
懒人版:
ghost commentedon Jul 14, 2019
@liuxiaole
您好!
这个方法并不是一个很好的打乱实现,它导致每个元素仍有很大的可能在原位附近。
见:https://blog.oldj.net/2017/01/23/shuffle-an-array-in-javascript/#comment-1466
Konata9 commentedon Jul 15, 2019
这题和 Day24 的重复了
#84
xxf1996 commentedon Jul 15, 2019
写的可能比较直白,没考虑复杂度;
cmw-big commentedon Jul 15, 2019
这个改变了原数组
arr.sort(() => {
return Math.random() - 0.5;
}
JiangXue93 commentedon Jul 15, 2019
稍微考虑了下输入验证
tonyChenHey commentedon Jul 15, 2019
好像没写对....运行刷新多几遍就卡了
HuoXiaoYe commentedon Jul 15, 2019
我感觉可以让前面的数字和后面的数字 交换顺序 , 不过这样效果应该不是很好
yjua commentedon Jul 16, 2019
洗牌算法
liuxiaole commentedon Jul 17, 2019
@t532 谢谢告知。第一直觉是没问题啊这个这么简单,仔细想了一下,确实是存在问题的,具体问题由 sort 的实现不同而不同。以快排为例,第一次做 partition 时会固定下一个中间数,这个数有很大概率落在中间,有极小概率落在两端。 https://bost.ocks.org/mike/shuffle/compare.html 这里可以看到不同洗牌算法是否真的洗乱,可以看到 random compareFn 的实现在三个角上有大量颜色。
kjhghuj commentedon Jul 25, 2019
@t532 老哥,第一种方法中的那个;号是啥呀?我自己试着写,不加;号就报错.....
ghost commentedon Jul 25, 2019
@kjhghuj
你好,不加分号则js引擎将后一个结构赋值运算符的
=
前部分解释为成员访问。forever-z-133 commentedon Aug 1, 2019
没有人写 while 循环,感觉应该也是个比较烧性能的。
4 remaining items