快速排序
简介
快速排序是一种高效的排序算法,采用分而治之的策略将一个大列表分成两个小列表。基本步骤是选择一个基准值,然后将数组中的元素分成两部分:小于基准值的元素和大于基准值的元素。这两部分独立地进行排序。
示例
给定数组:[4, 1, 6, 7, 5, 3, 2, 8, 9]
实现方法
小的放左边,大的放右边,循环往复
let arr = [4, 1, 6, 7, 5, 3, 2, 8, 9]
/**
* 简单版 -- 容易理解,但是效率低,会创建很多数组,空间复杂度O(n^2)
* @param {*} arr
* @returns
*/
function quickSort(arr) {
//判空处理
if (arr == null || arr.length == 0) return []
// 选择数组的第一个元素作为基准值
let baseEle = arr[0]
// 创建两个空数组,用于存储小于和大于基准值的元素
let left = [] // 左侧数组
let right = [] // 右侧数组
// 从数组的第二个元素开始,遍历剩余的元素
for (let i = 1; i < arr.length; i++) {
// 如果元素小于基准值,将其添加到left数组中
if (arr[i] < baseEle) left.push(arr[i])
// 否则,将其添加到right数组中
else right.push(arr[i])
}
// 递归 - 对left和right数组进行快速排序
left = quickSort(left)
right = quickSort(right)
// 将基准值添加到left数组中,然后将left和right数组合并,返回结果
left.push(baseEle)
return left.concat(right)
}
function quickSort(arr) {}
console.log(quickSort(arr))