js数组排序

79 阅读1分钟
1.原生的sort方法
function ArraySort(arr){
  // 正序
  return arr.sort((a,b) => a - b)
}
2. 冒泡排序
function ArrayBubbleSort(arr){
  for(let i = 0; i < arr.length; i++){
    for(let j = i + 1; j < arr.length; j++){
      // 判断相邻两个值的大小
      // 如果第一个大于第二个,则将他们调换位置
      if(arr[i] > arr[j]){
        let a = arr[i]
        let b = arr[j]
        arr[i] = b
        arr[j] = a
      }
    }
  }
  return arr
}
3.快排 (从中间开始比较,递归)
function ArrayQuickSort(arr){
  // 如果数组中只有1个值,则直接return
  if(arr.length <= 1){
    return arr
  }
  // 获取中间索引
  let index = Math.floor(arr.length / 2)
  // 获取中间的索引值
  let middle = arr.splice(index, 1)
  // 新建两个数组,用于存小于中间值的数据和大于中间值的数据
  let left = [], right = []
  arr.forEach((item)=>{
    // 将小于中间值的数据放入left数组
    if(item < middle){
      left.push(item)
    }else{
      // 将大于中间值的数据放入right数组
      right.push(item)
    }
  })
  // 递归调用
  return ArrayQuickSort(left).concat(middle,ArrayQuickSort(right))
}