算法题-每日一道

73 阅读1分钟

1、洗牌算法

打乱数组,其算法思想就是 从原始数组中随机抽取一个新的元素到新数组中

方法一

var arr = [1, 2, 3, 4, 5, 6];

function sort(arr) {
    var newArr = [];
    for(var i = 0, len = arr.length; i < len; i++) {
        var j = Math.floor(Math.random() * (len - i));
        newArr[i] = arr[j];
        arr.splice(j, 1)
    }
    return newArr;
}

方法二

  • 正负一半概率
  • Math.random是[0,1)
arr.sort(function(){
    return .5 - Math.random();
})