算法导论的学习,以前总是死记硬背,理解一个算法以为能够考试就是掌握。结果后来越来越觉得算法没啥用呀,遇到问题也不知道使用算法解决,心中一点思路都没有。
现在发现,其实很多时候业务开发我们用不到算法,但是当遇到的时候,都希望自己能够找到解决方法。学习算法就是学习其思想,其思路,其适用场景。当我们遇到问题的时候,才能快速找到对应算法思想去解决它。这是事半功倍的。重要的思想总是少数的,具体的算法总是多态的,因此掌握思想即可,具体问题设计具体算法。
比如遇到一个图中两个节点间的最短距离,这个时候很容易想到迪杰斯特拉算法 (Dijkstra’s algorithm)思想;排序相关,很容易各种排序算法思想;
下面例举几个常见的算法思想:
(1)递归分治思想,应用:归并排序,快速排序等具体算法
(2)动态规划思想
(3)贪心思想
(4)回溯思想
(6)分支限界思想
(7)随机化算法思想
。。。。。。。。。。
学习算法就是学习其思想,其思路,其适用场景。具体问题查查手册,设计具体算法即可。