0
点赞
收藏
分享

微信扫一扫

算法三:排序 - 洗牌算法

西特张 2021-09-28 阅读 53

实现方式

function shuffle(arr) {
    let newArr = arr;
    for (let i = newArr.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [newArr[i], newArr[j]] = [newArr[j], newArr[i]];
    }

    return newArr;
}

// test code
const a = [1,2,3,4,3,6,7,8,9,10,11];
console.log(shuffle(a));

算法分析

给定一个数组,从最后一个数字往前遍历,在遍历到某个元素时,假设index为i,那么取一个index是随机数 [0, i]的值进行调换。
此时取这个随机数的index方法就是Math.floor(Math.random() * (i + 1));
Math.floor: 取整数部分
Math.random: 取值范围时[0, 1)
所以最小是0,最大取到i,也就是不调整。

举报

相关推荐

0 条评论