随笔分类 - 算法
手撕堆排序(含图解,代码,复杂度分析,使用场景)
摘要:
本篇重点 1. 什么是堆,有什么特性? 2. 堆排序概述 3. 堆排序图解 4. 代码 5. 堆排序时间复杂度/空间复杂度/稳定性 6. 堆排序/堆适用场景 什么是堆 1. 堆是完全二叉树。一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的
阅读全文
本篇重点 1. 什么是堆,有什么特性? 2. 堆排序概述 3. 堆排序图解 4. 代码 5. 堆排序时间复杂度/空间复杂度/稳定性 6. 堆排序/堆适用场景 什么是堆 1. 堆是完全二叉树。一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的
阅读全文
手撕快速排序(含图解和两种实现代码含改进)
摘要:
摘要 1. 快速排序其实也是分而治之的思想 2. 快速排序是递归的 3. 首先找一个基准点,把比基准点小的数字都放到它的左边,比它大的数字都放在它的右边,一趟下来基准点的位置找到了,且它左边的数字小于(等于)它,右边的数字大于(等于)它。 再递归地对它左边的数字和右边的数字做同样的操作,直到递归结束
阅读全文
摘要 1. 快速排序其实也是分而治之的思想 2. 快速排序是递归的 3. 首先找一个基准点,把比基准点小的数字都放到它的左边,比它大的数字都放在它的右边,一趟下来基准点的位置找到了,且它左边的数字小于(等于)它,右边的数字大于(等于)它。 再递归地对它左边的数字和右边的数字做同样的操作,直到递归结束
阅读全文
浙公网安备 33010602011771号