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)] }