快速排序
-
const array = [10, 7, 2, 100, 5, 5, 230, 400, 1, -2]; // 快速排序 // 取一个基准值 // 根据基准值分出来 小于基准值的数组 和 大于基准值的数组 // 进入递归 // 当递归的数组小于两个时 跳出递归 将这个数组返回 基准条件 // 最后将每个数组拼接在一起 /** * 快速排序 * @param {number[]} arr * @returns */ function quickSort(arr) { // 跳出递归的基准条件 if(arr.length < 2) return arr; // 基准值选为数组的第一项 const goal = arr[0]; const minArr = arr.slice(1).filter(item => item <= goal); const maxArr = arr.slice(1).filter(item => item > goal); return quickSort(minArr).concat(goal).concat(quickSort(maxArr)); }
快速排序与归并排序的区别:
快速排序是先在数组元素中招一个基准点,根据基准点把小于基准点的元素放在左侧,大于基准点的元素放在右侧,分割完成后左侧的元素肯定大于右侧的元素,
然后对左侧元素和右侧元素再分别取出m、n两个基准点,进行分割分为4份,然后在4份的基础上再进行分割,分为8份,递归调用该快速排序算法,知道整个数组有序为止。
快速排序是 先整体有序,再局部有序;
归并排序是,先用二分法把数组分成两份,左侧和右侧分别进行排序,两边先排序完成,再组合到一起。
归并排序是 先局部有序,再整体有序。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通