原理:从就数组中随机选出一个数值组成新的数组、并且删除就数组中已经被取出来的值
// 时间复杂度O(n2)
function shuffle (arr) {
let newArr = []
while(arr.length) {
let index = Math.floor(Math.random() * arr.length)
let item = arr.splice(index, 1)
newArr.push(item)
}
return newArr
}
// 时间复杂度O(n)
function shuffle (arr) {
let len = arr.length
let index,temp
while(len) {
index = Math.floor(Math.random() * len)
len --;
temp = arr[len];// 拿到最后的元素
arr[len] = arr[index]; // 将找到的元素和最后一个元素做替换
arr[index] = temp;// 将最后的那个元素放在倒数第二
// es6的方式互换
// [arr[len], arr[index]] = [arr[index], arr[len]]
}
}
// Array.sort()
[0,4,5,6,3,2,9].sort(function () {
return .5 - Math.random()
})