洗牌算法

1、

function xipai(arr){

    let result=[];

    let random;

    while(arr.length>0){

        random=Math.floor(Math.random()*arr.length);

        result.push(arr[random]);

        arr.splice(random,1);

    }

    return result;

}

事件复杂度o(n*n);

 2、

function xipai(arr){

    let length=arr.length;

    let random;

    let temp;

    while(length!=0){

        random=Math.floor(Math.random()*length);

        length--;

        temp=arr[length];

        arr[length]=arr[random];

        arr[random]=temp;

    }

    return arr;

}

事件复杂度o(n);

 3、ES6

function xipai(arr){

    if(arr.length==0) return [];

    let length=arr.length;

    let random;

    while(length!=0){

        random=Math.floor(Math.random()*length--);

        [arr[random],arr[length]]=[arr[length],arr[random]];

    }

return arr;

}

>>>无符号移位

参考链接:

https://segmentfault.com/a/1190000014613703

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 3,616评论 0 0
  • 1.背景介绍 洗牌算法是我们常见的随机问题,在玩游戏、随机排序时经常会碰到,本质是让一个数组内的元素随机排列。 类...
    苟况劝学阅读 4,990评论 0 0
  • 大家好,我是IT修真院郑州分院第七期的学员冯亚超,一枚正直纯洁善良的WEB程序员 今天给大家分享一下,洗牌算法具体...
    f056917阅读 4,140评论 0 0
  • 完美洗牌算法 题目描述: 有个长度为2n的数组 {a1, a2, a3, ..., an, b1, b2, b3,...
    MinoyJet阅读 9,377评论 0 2
  • 逛半天,感觉这App.跟[简]搭不上。一脸懵逼。。古德白。后会无期
    314159_2a96阅读 2,981评论 0 2