【算法】实现数组的随机排序

核心: sort()方法的使用

sort()

  • 该方法会先使用toString()将数组的每一项转换为字符串进行比较
  • 如果要比较数值,必须通过一个函数作为参数来调用,此函数接收两个参数:a,b分别代表每次排序比较时的两个数组项,看返回值:
    • 如果返回值大于 0,则位置互换,再和前面的数组项依次比较,确定当前项的位置
    • 如果返回值小于 0,则位置不变。
// 升序
function rise(arr) {
  arr.sort((a, b) => {
    return a - b // 如果返回值大于0,证明a > b ,位置互换,b在前,升序
  })
  return arr 
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(rise(arr)); 

// 降序
function drop(arr) {
  arr.sort((a, b) => { // a是第一个数,b是第二个数
    return b - a // 如果返回值大于0,证明b > a ,位置互换,b在前,降序
  })
  return arr 
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(drop(arr)); 

// 随机
function random(arr) {
  return arr.sort(function() {
    return Math.random() - 0.5 // 通过随机产生0到1的数,然后判断是否大于0.5从而影响排序,产生随机性的效果。结果并不均匀,并不完全随机
  })
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(random(arr)); 

// 随机2
function random(arr){
  var len = arr.length;
  for(var i = 0; i < len - 1; i++){
    var idx = Math.floor(Math.random() * (len - i));
    var temp = arr[idx];
    arr[idx] = arr[len - i - 1];
    arr[len - i -1] = temp;
  }
  return arr;
}
const arr = [8, 4, 2, 3, 1, 7, 6, 5, 0, 9];
console.log(random2(arr)); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值