一直不了解算法这一块,只会简单的排序,很想接触这一块的知识,所以想请问下算法的大概学习流程和必要性,还有什么样的项目用的会比较多?应用在什么样的场合?
可以先了解一些基本的概念:什么是算法、怎么衡量一个算法(时间复杂度/空间复杂度)、有哪些经典的算法等,最好学习的过程中动手写写程序,自己实现一些算法、设计一些算法(找些经典的问题譬如八皇后问题、汉诺塔问题、背包问题等)。我觉得对程序员来说,数据结构和算法应该是必备的能力。写程序实际上就是设计算法、实现算法的过程。所以应该无所谓“用算法比较多的项目”。如果要说“经典算法(譬如你提到的排序)”能用在什么场合,我觉得有几个方面:1,平时写程序可以借鉴经典算法的思路,譬如用缓存化提高效率/采用类似动态规划的思路来剪枝等;2. 直接应用经典算法,譬如用hash替代array实现快速查找,用二分法加快搜索过程等