洗牌算法

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

你可能感兴趣的:(洗牌算法)