【算法】算法图解

        最近看了一本算法入门书——算法图解。封面的插画很好玩儿。最吸引我的还是封面里的一句话:向小说一样有趣的算法入门书。上个封面,大家感受一下:


        小说对我来说吸引力是很大的,属于开个头儿就停不下来那种,不看完就难受,熬夜通宵的情况也不是没有(年轻不懂事,熬夜坏身体)。算法是啥,跟数据结构一样抽象难懂啊。难道算法真的也能像小说一样吸引人吗?当时我翻开目录:恩,很全,看的话会学到很多东西。然后看了第一章:FacadeBook通讯录的例子,图解生动详细,看懂了,一点也不难理解,还有趣。于是愉快的决定看这本书啦(感谢杨倩推荐的书)。上一个叙事,大家感受一下:


        直到最后一天连续把第十章和第十一章看完了——熬夜看完的,停不下来。(/(ㄒoㄒ)/~~为了身体健康,我再也不睡前看这么有趣的书了)

        下面总结了一下书中内容:


        看这个书是在有一定基础上看的,对于数组,链表,栈,队列,树,图等数据结构有初步的了解。对于二叉查找算法、排序比较了解,动态规划,贪心算法,递归等算法也有初步了解,不过没搞清楚,软考中接触过又模糊了。因此,这本书给带给我很多的收获:

        1、对散列表这种数据结构理解了。

        2、广度优先搜索算法、动态规划、贪婪算法搞清楚了。狄克斯特拉算法还没搞清楚。

        3、对算法有了系统的了解,用算法解决实际问题有了思路,且明确了算法的研究方向。

        4、把算法和数据结构结合了起来。

        5、当然还有一个附带作用:对算法的兴趣又加深了一些。

知识点小结:

        散列表(Hash table,也叫哈希表)

是一种由 散列函数 和 数组 构成的数据结构。散列函数用于做映射,数组用于存储记录。是根据(Key)而直接访问在内存存储位置的数据结构散列函数:输入任何一个字符串,都能返回一个int值。而且输入相同的字符串,返回相同的值。这个int值就作为数组的下标,用来表示字符串的存储位置,然后把字符串存到数组相应的位置。

        广度优先搜索算法(breadth-first search,BFS):

        解决图中的最短路径问题。图是有向图,从开始节点,一层一层查找。同一层的各个节点之间顺序无所谓,因为从开始节点到它们的路径是一样的。直到找到目的节点,此时目的节点所在的层数就是要找的最短路径。

        动态规划:

        动态规划是通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划能够解决子问题并使用这些答案来解决大问题。但是仅当每个子问题都离散的,即不依赖于其他子问题时,动态规划才管用。需要用填充网格的方式解决动态规划。

        贪婪算法:

        是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。最终会得到一个近似解,不一定是最优解,但是效率高。


总结:

        开卷有益。不断总结,编织知识网。




  • 32
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值