数据结构与算法学习-开篇

前言

数据结构和算法这门课一直是计算机专业最基础的一门课,大学时期掌握的不够好,毕业后长期写业务,也没有特别的花时间好好攻克一下,一直是自己的短板。这次在极客时间上订阅了两门数据结构和算法方面的专栏,一是 Google 工程师王争老师主讲的《数据结构与算法之美》专栏,另一篇是前 Facebook 工程师覃超老师主讲的视频专栏《算法面试通关40讲》,计划将这两个专栏配合着学习,相互补充,并适时输出学习笔记。这是第一篇学习笔记,主要回答了数据结构和算法是什么?为什么要学习?以及怎么样学习?这三个问题。

数据结构与算法是什么?

数据结构与算法是每个计算机专业必修的一门课,这里分为两个部分,一个是数据结构,一个是算法

数据结构是一组数据的存储结构,算法是操作数据的一组方法。数据结构和算法是相辅相成的,数据结构是为算法服务的,算法是作用在特定的数据结构之上。数据结构和算法解决的是如何更省、更快地存储和处理数据的问题。

为什么要学习数据结构与算法?

如果把一个优秀程序员需要掌握的技能和金庸武侠小说中的武功技能类比,那么掌握多少门编程语言就如同掌
握了多少招式,如降龙十八掌,打狗棒法等,而数据结构与算法就如同是武林高手的内功,像九阳神功、易筋经一样。内功就如同基础,只有内功扎实,学习任何招式就会事半功倍。

总结下有这几个理由:

  1. 进入国内外大厂必备
  2. 修炼编程基础思维,写出性能更优的代码
  3. 提高学习力,掌握计算机程序的本质

怎么样学习数据结构与算法?

#学什么

这是王争老师绘制的一张几乎涵盖了所有数据结构与算法知识点的知识图谱
image

学习重点:

  1. 学习复杂度分析,考量效率和资源消耗的标准。
  2. 最常用、最基础的 20 个数据结构与算法,学习他们的:来历特点适合解决什么问题实际的应用场景
    • 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树。
    • 算法:递归、排序、二分查找、搜索、哈希算法、分治算法、回溯算法、动态规划、字符串匹配算法。

#怎么学

  1. 边学边练习,三分学,七分练。将每次讲到的数据结构和算法使用自己熟悉的编程语言实现一遍,这里将先使用最常用的 C 语言实现,后面想再分别使用 Objective-C、Swift、JavaScript 实现一遍。
  2. 多问多思考多互动,在专栏留言区多提问,参与讨论,一起进步。
  3. 设定切实可行目标,每次学习完输出学习笔记。
  4. 心态平和,沉淀知识,反复迭代。

#有关书籍

image

  1. 入门:《大话数据结构》《图解算法》
  2. 编程语言:《数据结构和算法分析》
  3. 面试:《剑指offer》《编程之美》《编程珠玑》
  4. 闲暇阅读:《算法帝国》《数学之美》《算法之美》
  5. 经典大部头:《算法导论》《算法》
  6. 殿堂级:《计算机程序设计艺术》

分享个人技术学习记录和跑步马拉松训练比赛、读书笔记等内容,感兴趣的朋友可以关注我的公众号「青争哥哥」。

image

0%