如何系统高效地学习数据结构与算法?

998 阅读2分钟

  数据结构与算法其实并不难,东西也不算多,常用的基础的知识点更是屈指可数。觉得他太难懂,那一定是没有找到好的学习方法,没有抓到重点。 ####1.什么是数据结构、算法?   学习这两者是为了使用,其实没有必要深挖定义。   广义:数据结构是一组数据的存储结构;算法是操作数据的一组方法。   狭义: 指某些著名的数据结构和算法。比如队列、栈.. ;二分查找、动态规划..   数据结构为算法服务,算法要作用在特定的数据结构之上。 ####2.学习的重点在哪里?   一个最重要的概念------复杂度分析。   它几乎占据了这门课的半壁江山,是其精髓。数据结构解决的是如何更省、更快地存储和处理数据。因此,需要一个考量效率和资源消耗的分析方法,这就是复杂度分析方法。   搞定复杂度分析,就是正文了,如图:

大纲.jpg
  重点的20个:10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树;10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配。   重点关注算法的**“来历、自身特点、适合解决的问题”以及“实际应用场景”**。 ####3.一些事半功倍的学习技巧

  1. 边学边练,适度刷题   “边学边练”,把学习时涉及的数据结构和算法,全部用代码实现一遍,效果倍棒。但是,要“适度刷题”,一定不要浪费太多时间在刷题上,我们的目的还是掌握,然后应用。除非是Google、Facebook这种对算法要求很高的公司,国内企业还是重在掌握应用。
  2. 多问、多思考、多互动   学习最好的方法,莫过于找几个人一起学,一块讨论、一块切磋,有问题及时寻求老师答疑。
  3. 打怪升级法   学习中最大的问题,就是要坚持下来。枯燥的学习过程中,给自己设立切实可行的目标,让自己看到进度条。比如写学习笔记或心得,同时尽可能寻求正反馈。
  4. 沉淀知识   学习需要沉淀,不要妄想一下子掌握所有。**学习的过程是反复迭代、不断沉淀的过程。**这两句话,也是我最为感触的地方。