算法轻入门(多语言实现)

算法图标所谓算法,就是一套解决问题的思路或者方案,也即先做什么,再做什么,最后做什么。

算法的种类有很多,本套教程涵盖了大部分常用算法,包括动态规划算法、分治算法、贪心算法、排序算法、查找算法等,它们都用来解决某一类实际问题。

本教程通俗易懂,深入浅出,不管你是初学者,还是程序员,都能轻松阅读。

为了演示数据的变化过程,或者解决问题的详细步骤,我们制作了大量优质图片,其中不少还是 gif 动图。

本教程不但提供了伪代码,还提供了源代码,复制到编译器就能一键运行。更贴心的是,考虑到读者的基础不同,我们同时提供了 C/C++、Java 和 Python 三种源码,它们都是主流语言。

由于某些特殊原因,个别算法没有提供伪代码。

关于本教程

开始创作时间:2020-11-27

最后迭代时间:2024-01-10

当前版本:Version 3.0

字数统计:9W 字

版权证书:Version 1.0    Version 2.0    Version 3.0

教程目录:
1. 算法是什么
2. 时间复杂度和空间复杂度
3. 递归算法
4. 斐波那契数列(递归+源码+注释)
5. 分治算法
6. 找数组的最大值和最小值
7. 多数元素问题
8. 汉诺塔问题(分治+源码+动画演示)
9. 贪心算法
10. 分发饼干问题
11. 最大子序和问题
12. 部分背包问题
13. 动态规划算法
14. 零钱兑换问题
15. 01背包问题
16. 完全背包问题
17. 回溯算法
18. 子集问题
19. 组合问题
20. 全排列问题
21. 迷宫问题
22. N皇后问题
23. 冒泡排序算法
24. 双向冒泡排序算法
25. 插入排序算法
26. 选择排序算法
27. 希尔排序算法
28. 归并排序算法
29. 快速排序算法
30. 计数排序算法
31. 基数排序算法
32. 桶排序算法
33. 对排序算法的总结
34. 顺序查找算法
35. 二分查找算法(折半查找算法)
36. 插值查找算法
37. 哈希查找算法
38. 并查集
39. 寻找图中是否存在路径
40. 冗余连接问题
41. 最小生成树
42. prim算法(普里姆算法)详解
43. kruskal算法(克鲁斯卡尔算法)详解
44. 最短路径算法
45. 迪杰斯特拉算法(求最短路径)
46. 弗洛伊德算法(求最短路径)