sort(()=>{return Math.random()-0.5)}乱序数组不准确

博客探讨了JavaScript中sort(()=>{return Math.random()-0.5)}乱序数组不准确的问题。结合插入排序原理,指出chrome浏览器对长度10以内数组用插入排序,反之用快速和插入排序混合。以[1,2,3]为例分析,得出其出现概率与理论平均概率不符,解释了乱序不准确的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么sort(()=>{return Math.random()-0.5)}乱序数组不准确。(注意结合插入排序原理来理解)

@1、chrome浏览器对于数组长度10以内为插入排序。反之则快速排序和插入排序混合

@2、所以,对于[1,2,3]

第一此比较对1和2就行排序,可能为正序也可能为倒序,所以两种可能一种生成[1,2,3]一种[2,1,3]。

                 第二次比较使用3和上述两种数组的第二个元素进行比较,也有两种排序可能,倒序和正序,如果为正序则不变排序完成。如果为倒序则需要和1或者2交换位置,假设第一次排序生成为[1,2,3],生成[1,3,2]此时插入排序并未完成。所以继续和1进行比较,又有两种情况。生成[3,1,2]或者[1,3,2]。

所以到[1,2,3]概率为1/2*1/2=25%

数组乱序有六种可能,所以一种应该平均为100/6。所以这显然不对。

转载于:https://www.cnblogs.com/qdcnbj/p/11186873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值