Skip to content

terry108/algo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 

Repository files navigation

数据结构和算法学习规划

为什么要学?

  1. 算法是基本功,有了基本功之后,学习区块链、人工智能就非常快了。
  2. 新技术的迭代非常快,但是核心和本质的东西是不变。
  3. 基础知识就像一座大楼的地基,它决定了我们的技术高度。基础知识就是操作系统、计算机网络、编译原理和数据结构和算法等等。
  4. 大厂面试都在考算法,相比短期的能力,他们更看重你的长期潜力。
  5. 掌握了数据结构和算法,更有利于阅读框架源码和背后的设计思想。在工作中也能写出性能更优的代码。
  6. 基础架构研发工程师,写出达到开源水平的框架才是你的目标。只会CRUD,写凑合能用的代码,陷入35岁瓶颈,很容易被后浪淘汰。
  7. 掌握了数据结构与算法,你看待问题的深度,解决问题的角度就会完全不一样。算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。
  8. 长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。

如何学习?

  1. 算法并不可怕,关键是找到好的系统和高效的学习方法,抓中重点。
  2. 数据结构就是一组数据的存储结构,算法就是操作数据的一组方法。就像图书馆一样,书籍是数据,算法是如何高效的找到需要的书。
  3. 数据结构是为算法服务的,算法要作用在特定的数据结构之上。
  4. 学习算法要学习它的“来历”、“自身的特点”、“适合解决的问题”以及“实际的应用场景”。了解每个算法“是什么”,思考“为什么”,遇到问题就知道“怎么做”。
  5. 边学边练,适度刷题。
  6. 多问、多思考。
  7. 打怪升级学习法,设定一个切实可行的目标。
  8. 学习知识的过程是反复迭代、不断沉淀的过程。
  9. 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树。
  10. 10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

学习规划

  • 复杂的分析【第一阶段 M 10分】
    • 时间复杂度
    • 空间复杂度
  • 数据结构
    • 线性表【第一阶段 E 8分】
      • 数组
      • 链表【第一阶段 M 9分】
      • 队列
    • 散列表
  • 算法
    • 排序【第一阶段 E 7分】
      • O(n^2)
        • 冒泡排序
        • 插入排序
        • 选择排序
        • 希尔排序
      • O(nlogn)
        • 归并排序
        • 快速排序
        • 堆排序
      • O(n)
        • 计数排序
        • 基数排序
        • 桶排序
    • 搜索
      • 深度优先
      • 广度优先
      • A*启发式搜索
    • 查找【第一阶段 E 7分】
      • 线性查找
      • 树结构查找
      • 散列表查找
    • 字符串匹配
      • 朴素
      • KMP
      • Robin-Karp
      • Boyer-Moore
      • AC自动机
      • Trie
      • 后缀数组
    • 基本算法思想
      • 贪心算法
      • 分治算法
      • 动态规划
      • 回溯算法
      • 枚举算法
  • 其他
    • 数论
    • 计算几何
    • 概率分析
    • 并查集
    • 拓扑网络
    • 矩阵运算
    • 线性规划

About

数据结构与算法

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages