许多程序员对算法望而生畏,认为算法是一项高深莫测且枯燥的学问。
算法真的有那么难,真的有那么无趣吗?恰恰相反,算法是编程领域最有意思的一块内容,也并没有许多人想象的那样难以驾驭。
![漫画算法2 进阶数据结构、算法及复杂多变的算法面试题目](https://www.yunguanzhu.com/wp-content/uploads/2022/03/2ae659c347593684.jpg)
漫画算法2 进阶数据结构、算法及复杂多变的算法面试题目
学习算法,我们不需要去死记硬背那些冗长复杂的背景知识、底层原理、指令语法……我们所需要的只有对算法思想的领悟、对空间和性能的理解、开动脑筋去寻求最佳的解决方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。
我一直希望写出一些东西,让更多的IT同行们能够领略到算法的魅力,于是在2016年9月,我创造了一个初出茅庐的菜鸟程序员形象,这个菜鸟程序员名叫小灰。
程序员小灰的故事活跃在微信公众号上,用漫画的形式诉说着他的一次又一次面试经历,倔强的小灰屡战屡败,屡败屡战。小灰是我本人刚刚入行时的真实写照,相信许多程序员小伙伴们也能从中看到自己的影子。
2019年5月,程序员小灰的故事从微信公众号搬到了纸质的图书上,这本书叫作《漫画算法》。这本书一出来,就成为了当年的IT畅销书。能让更多行业同仁看到小灰的故事,我感到十分欣慰。
《漫画算法》的内容定位是“入门”级别,里面讲解的是相对基础的算法和数据结构知识,至于相对复杂的知识点,比如红黑树、图、KMP算法等就没有涉及。许多读者看完这本书,难免有些意犹未尽的感觉。
于是,为了让大家更全面深入地了解相关知识,我开始了《漫画算法2》的创作,让小灰和大黄的有趣故事得以延续,也让读者们的算法学习之路有新的起点。
这本书通过漫画的形式,讲述了小灰学习算法和数据结构知识的心路历程。书中许多内容源于本人的微信公众号,但是比公众号的内容更加系统,更加全面,也更加严谨。
本书是基于前作《漫画算法》的续作。完全没有相关基础的小伙伴可以先看看《漫画算法》这本书,从而对算法和数据结构有一个基本的认识。算法本身是很枯燥的,我本人对应试教育式的刷题这种方式也不是很喜欢,但是小灰做到了漫画和知识点的结合,让学习和娱乐相结合,同时降低了学习算法的门槛。不管是入门级的新手还是职场老手,都可以阅读一下。毕竟这是一个算法为王的年代,我相信算法的重要性随着时间的推移会越来越明显,我也相信大家都能从本书学到不少算法知识。
有一定基础的小伙伴可以从这本《漫画算法2》当中学到更多的算法,比如希尔排序算法、KMP算法,也可以学到更丰富的数据结构,比如红黑树、跳表,还可以了解更多的算法面试题目,比如螺旋遍历二维数组、股票最大收益问题等。
这不是一本编程入门书。对于在编程方面完全零基础的读者,建议先了解一些Java语言的基础。不过,算法思想是相通的,如果你掌握的是其他编程语言,也不难看懂其中的算法和数据结构知识。覆盖了数据结构的大部分内容。除了基础内容以外,还讲解了互联网面试常见的一些算法实例。图解详细,代码整洁,对于理解算法的原理很有帮助。
第1章介绍了几种典型的排序算法,包括选择排序、插入排序、希尔排序、归并排序、基数排序。
第2章介绍了“树”结构的高级应用,包括二叉查找树、AVL树、红黑树、B树和B+树。
第3章介绍了“图”结构的概念,以及深度优先遍历、广度优先遍历、单源最短路径、多源最短路径算法。
第4章介绍了“查找”相关的算法和数据结构,包括二分查找算法、RK算法、KMP算法,以及“跳表”这种用于高效查找的数据结构。
第5章介绍了多种职场上流行的算法面试题目及详细的解题思路,例如螺旋遍历二维数组、寻找数组中第k大元素、求股票交易的更大收益等。