对于编程的初学者,可以先通过简单的排序算法了解最简单的ADT线性表的常用操作;然后要重点掌握递归技术,包括递归和递推的相互转换。递归技术非常重要, 可以通过递归技术了解ADT栈的操作;接着学习搜索法的初步——回溯法,研究经典问题八皇后问题和走迷宫问题,通过这些经典问题了解深度优先搜索法 (DFS)和宽度优先搜索法(BFS)以及ADT栈、ADT队列的操作,要学会利用人工设置堆栈模拟递归;接着可以学习分治法、贪心法这两种常用的策略, 并应用到排序、搜索等简单的算法中;这时再开始学习图和树这两种抽象数据类型就应该没有什么难度了。在学习ADT图和ADT树时,要注意结合离散数学中的 图论理论知识和搜索法中的DFS,BFS方法,要学会将实际问题转化为图论模型;再下去可以学习各种搜索法的优化算法,启发式搜索、A算法、A*算法或界 限剪枝法等;然后是网络流算法,要注意模型的建立;最后学习最优化问题的解法,包括线性规划、动态规划、非线性规划等算法策略,这部分内容主要侧重模型的 建立和分析,算法本身并没有难度。这样基本的算法就学习完了。再深入一点可以学习问题的计算复杂性,计算模型,并行算法,神经网络以及各个领域中的算法.