![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《数据结构与算法之美》
#_
这个作者很懒,什么都没留下…
展开
-
39.回溯算法
回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:找到一个可能存在的正确的答案 在尝试了所有可能的分步方法后宣告该问题没有答案在最坏的情况下,回溯...原创 2020-01-26 15:50:11 · 167 阅读 · 0 评论 -
37.贪心算法
贪心算法:如何用贪心算法实现Huffman压缩编码?45. 跳跃游戏 II原创 2020-01-25 19:29:31 · 159 阅读 · 0 评论 -
30.图
1存储方式1.1邻接矩阵2.2邻接表原创 2019-09-27 10:00:13 · 79 阅读 · 0 评论 -
28.堆和堆排序
1概念2实现对于完全二叉树,可以使用数组来存储2.1插入插入数组中最后一个位置,然后从下往上堆化2.2删除堆顶元素将最后一个元素放在堆顶,然后从上往下堆化。2.3堆排序2.3.1建堆对数组下标n/2到1的元素从上往下堆化,时间复杂度O(n)。2.3.2排序第一个元素和最后一个元素交换,然后从上往下堆化。时间复杂度O(nlog...原创 2019-09-24 14:01:21 · 114 阅读 · 0 评论 -
27.递归树求时间复杂度
要点:递推公式写成递归树对每层的复杂度求和原创 2019-09-23 11:31:16 · 167 阅读 · 0 评论 -
26&27.红黑树
1红黑树定义原创 2019-09-19 10:46:15 · 70 阅读 · 0 评论 -
13.线性排序
目录1 线性排序算法介绍2 桶排序(Bucket sort)2.1算法原理:2.2使用条件2.3适用场景2.4应用案例3 计数排序(Counting sort)3.1算法原理3.2代码实现(参见下一条留言)3.3使用条件4 基数排序(Radix sort)4.1算法原理(以排序10万个手机号为例来说明)4.2使用条件5 思考1 线性排序算...原创 2019-09-03 21:23:24 · 244 阅读 · 0 评论 -
11&12.分析排序、快排、归并
1如何分析一个“排序算法”?1.1排序算法的执行效率1. 最好情况、最坏情况、平均情况时间复杂度2. 时间复杂度的系数、常数 、低阶3. 比较次数和交换(或移动)次数1.2排序算法的内存消耗1.3排序算法的稳定性1.4冒泡排序和插入排序的时间复杂度都是 O(n2),都是原地排序算法,为什么插入排序要比冒泡排序更受欢迎呢?冒泡排序中数据的交换操作:i...原创 2019-08-31 17:21:31 · 207 阅读 · 0 评论 -
10.递归
https://time.geekbang.org/column/article/41440如何编写递归代码?写出递推公式,找到终止条件写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码编写递归代码的关键是,只要遇到递归,我们就把它抽象成一个递推公式,不用想一层层的调用关系,不要试图用人脑去分解递归...原创 2019-08-31 15:51:23 · 391 阅读 · 0 评论 -
03&04.复杂度分析
原创 2019-08-25 14:53:31 · 114 阅读 · 0 评论