![](https://img-blog.csdnimg.cn/20200826222215920.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
《算法图解》笔记
明天在写
troublemaker、
零基础的研究生
展开
-
算法图解阅读笔记——第一曲(算法简介和选择排序)
前言零基础开始自学算法,目前用的都是python,于是就准备顺着python入门数据结构与算法。从风评得知,《算法图解》对小白比较友好,看下来也确实还好,内容以图为主,代码也较少,不需要什么代码功底。这是我看的第二遍,就决定来点笔记。目录结构第1章 算法简介第2章 选择排序算法简介重点讲到二分查找,大O表示法的初步介绍(后续章节还会细讲),以及二分查找与简单查找的比较、旅行商问题二分查找:输入是一个有序的元素列表(必须有序)。如果要查找的元素包含在列表中,二分查找返回其位置原创 2020-08-29 20:51:16 · 199 阅读 · 0 评论 -
算法图解阅读笔记——第二曲(递归和快速排序)
目录结构第3章 递归第4章 快速排序递归什么是递归(毕竟自己调用自己这样的解释太抽象了)先以书中的例子介绍递归,然后用自己的理解来描述递归上述是一个盒子嵌套这一个盒子的问题,类似套娃,找钥匙的过程有两种方法:第一可以使用for循环,第二也可用递归。(那两者有什么区别呢?)假设现在我们的盒子总共是有三层嵌套,钥匙在第三层,编号为⑤的盒子中(如下图)使用 for 循环寻找钥匙是逐层查找,也就是说先找第一层,接着第二层、第三层,那么最后的查找盒子的顺序便是①②③④⑤⑥,当然我原创 2020-09-05 11:24:37 · 194 阅读 · 0 评论 -
算法图解阅读笔记——第三曲(散列表和广度优先搜索)
目录结构第5章 散列表第6章 广度优先搜索散列表散列表也称为散列映射、映射、字典、关联数组。在python中以字典的形式实现散列函数:将输入映射到数字散列函数是这样的函数,即无论你给它什么数据,它都还你一个数字。散列函数两个要求:散列函数总是将同样的输入映射到相同的索引(在相同输入的情况下,输出必须一致)散列函数将不同的输入映射到不同的索引(在不同输入的情况下,输出也必须不同)散列表应用案例 散列表用于查找如存一个key为联系人,value为联系电话的散原创 2020-09-05 15:41:30 · 138 阅读 · 0 评论 -
算法图解阅读笔记——第四曲(狄克斯特拉算法和贪婪算法)
目录结构第7章 狄克斯特拉算法第8章 贪婪算法狄克斯特拉算法图A是使用广度优先搜索算法计算最短路径的图结构(非加权图)——在非加权图中计算最短路径,可使用广度优先搜索图B是使用狄克斯特拉算法计算最短路径的图结构(加权图)——在加权图中计算最短路径,可使用狄克斯特拉算法什么是狄克斯特拉算法狄克斯特拉算法是一种在加权图算法,目的是为了解决加权图中最短路径的问题,只适用于有向无环图,而且图中的权值不能为负。使用狄克斯特拉算法算法步骤:找出"最便宜"的节点,即可在原创 2020-09-05 20:58:55 · 304 阅读 · 0 评论 -
算法图解阅读笔记——第五曲(动态规划和K最近邻算法)
目录结构第9章 动态规划第10章 K最近邻算法动态规划动态规划思想动态规划先将问题分成小问题,先解决这些小问题,在逐步解决大问题。动态规划的使用条件动态规划不适合处理商品的部分问题:使用动态规划时,要么考虑拿走整件商品,要么考虑不拿,而没发判断该不该拿走商品的一部分。动态规划不适合处理相互依赖的情况:仅当每个子问题都是离散的,动态规划才管用。使用动态规划计算背包问题的最优解之前使用贪婪算法无法求得背包问题的最优解,只能计算出近似解。【必须在背包容量给定的情况下,偷到价值最原创 2020-09-06 10:41:44 · 170 阅读 · 0 评论