经典排序算法的JS实现

1.冒泡排序法, 算法可视化实现参考visualgo,空间复杂度暂时还未理解,先不写了

Tips:因比较少一个数组,所以循环次数要小于length-1

复杂度:O(n²)

function bubble(a) {
  for (let i = 0; i < a.length - 1; i++) {
    for (let j = 0; j < a.length - i - 1; j++) {
      if (a[j] > a[j + 1]) {
        [a[j], a[j + 1]] = [a[j + 1], a[j]]
      }
    }
  }
 return [...a]
}

2.快速排序算法,算法可视化实现参考visualgo

Tips:考察递归,中分查找法

复杂度:O(nlogn)

function quick(a) {
  if (a.length <= 1) return a;
  let lArr = [], rArr = [];
  let q = a[0]
  //切记从1开始
  for (let i = 1; i < a.length; i++) {
    if (a[i] < q) lArr.push(a[i])
    else rArr.push(a[i])
  }
  //开始递归调用
  return [...quick(lArr), q, ...quick(rArr)]
}

 

上一篇:Android Studio Tips and Tricks


下一篇:html input 设置只能输入数字并设置最小值