算法入门教程(十大经典算法图解)
所谓算法(Algorithm),就是解决问题的方法。换句话说,算法提供了一整套解决问题的方案或者思路,也即先做什么,再做什么,最后做什么。学习算法,可以短时间内快速提升「遇到问题,解决问题」的能力。
算法的种类有很多(比如十大经典算法之类),本教程涵盖了几乎所有常用的算法,包括动态规划、分治、贪心、排序、查找等,每种算法用来解决某一类实际问题。
通常,解决一个问题的算法有很多,例如对某个序列进行排序,可以使用冒泡排序、选择排序、希尔排序等,有些算法运行效率高、有些效率差。这种情况下,我们需要具备挑选“好”算法的能力,阅读本套算法教程之后,你将具备这种能力。
教程特点
这套算法入门教程专为小白打造,如果您刚刚接触算法,或者对算法懵懵懂懂,那么本套算法教程非常适合您。
为了降低初学者的门槛,我们采用「图解+伪代码+源代码」的方式讲解每个算法。不仅如此,考虑到读者只掌握了 C/C++、Java 和 Python 中的某一门编程语言,本教程中的每个算法都同时配有 C/C++、Java 以及 Python 的实现源码。
本教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,深入浅出地讲解每个算法,让读者尽快入门。
- 教程目录:
- 1. 算法是什么?(通俗易通,小白专享)
- 2. 时间复杂度和空间复杂度的概念(非常详细)
- 3. 递归算法(超级详细,图文并茂)
- 4. 斐波那契数列(非常详细,动图演示)
- 5. 分治算法的基本思想(图解)
- 6. 求数组中的最大值和最小值(动图演示,附带源码)
- 7. 多数元素问题(非常详细,图文并茂)
- 8. 汉诺塔问题(超级详细,动图演示)
- 9. 贪心算法的基本思想(通俗易懂)
- 10. 分发饼干问题(非常详细,附带源码)
- 11. 最大子序和问题(非常详细,附带源码)
- 12. 部分背包问题(非常详细,附带源码)
- 13. 动态规划算法的基本思想(非常详细)
- 14. 零钱兑换问题(非常详细,附带源码)
- 15. 01背包问题(超级详细,附带源码)
- 16. 完全背包问题(超级详细,附带源码)