数据结构与算法之美---CH01+CH02---是什么为什么怎么做

文章目录

  • 0 什么是数据结构和算法
  • 1 为什么学习
  • 2 学习什么
  • 3 怎么学习

0 什么是数据结构和算法

1、数据结构是指一组数据的存储结构
2、算法就是操作数据的方法
3、数据结构和算法是相辅相成的,数据结构是为算法服务的,而算法要作用在特定的数据结构之上

1 为什么学习

(1) 大学时候没有认真学习,甚至像我这种没有计算机科班背景的人,对数据结构和算法总是陌生和恐惧。
(2) 工作中比较少接触,做客户端对其要求也不高,一旦接触就本能的绕过。
(3) 大厂面试,千万别被数据结构和算法拖后腿
(4) 不想做一辈子业务工程师,要成为基础架构师,写出达到开源水平框架的代码。
(5) 算法能够提升编程技能,训练逻辑思维,使你看待问题更深入,解决问题更犀利。
(6) 未来遇到新的热门的技术,能够快速的入手和掌握,万变不离其宗。

2 学习什么

为了能够让你对数据结构和算法有一个全面认识,这里有一张图,几乎涵盖了所有数据结构和算法书籍中所讲的知识点。
数据结构与算法之美---CH01+CH02---是什么为什么怎么做_第1张图片
但是这不免太多,没有重点了。根据多年的面试开发经验,王争总结了20种常用数据结构和算法,只要集中精力注意攻克就足够了。
10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;
10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

3 怎么学习

王争以多年学习和实践经验总结出一个简洁、高效的学习路径,总结为三大思路,四个步骤:
思路如下:
(1)结合学习和实践经验,精选实用的内容讲解。
(2)从为什么用到怎么用,通透背后设计思想,培养举一反三能力
(3)结合真是开发案例,讲解数据结构和算法如何应用到实际编码中。
分解专栏模块,如下
(1) 入门篇 时间复杂度和空间复杂度分析,大O表示法由来,只有掌握好复杂度分析,才能真正的去学习算法,评价算法,进而合理应用算法。
(2) 基础篇 共26小节,结合软件开发实例深入讲解常用的数据结构和算法。
(3) 高级篇 通过学习不常用的数据结构和算法,强化思维训练,拓展视野
(4) 实战篇 通过开源项目,框架实战串讲学习过的数据结构和算法,增加更直观的感受。

在学习的过程中,要做到:
(1) 边学边练,适度刷题。
(2) 多问,多思考,多互动,输出倒逼输入
(3) 给自己找成就感,坚持下去,切忌虎头蛇尾
(4) 沉下心来,知识学要沉淀,尤其是这种拼功底的知识,需要反复练习,熟练掌握后追求更高层次

王争给出了每种算法的难易和重要程度和掌握程度的总结,如下图所示,学习过程中可时时参照:
数据结构和算法之美

20个内容
	1. 复杂度分析
		Medium  10分
		掌握程度:能自行分析数据结构和算法的时间空间复杂度
	2. 数组队列和栈
		Easy  8分
		掌握程度:能实现动态数组、栈、队列
	3.链表
		Medium  9分
		掌握程度:能轻松写出经典链表题目代码
	4. 递归
		Hard 10分
		掌握程度:轻松写出二叉树遍历、八皇后问题、背包问题、DFS递归代码
	5. 排序和二分查找
		Easy 7分
		掌握程度:能把各种排序算法,二分查找及其变体代码写一遍即可
	6. 跳表
		Medium  6分
		掌握程度:初学者可跳过,看专栏看懂即可,不需要代码实现
	7. 散列表
		Medium  8分
		掌握程度:对于初学者,能够实现一个拉链法解决冲突的散列表即可
	8. 哈希算法
		Easy 3分
		掌握程度:暂时可不看
	9. 二叉树
		Medium  9分
		掌握程度:能代码实现三种遍历,按层遍历,求高度等经典题目
	10. 红黑树
		Hard  3分
		掌握程度:不用看
	11. B+树
		Medium  5分
		掌握程度:看专栏就行了
	12. 堆和堆排序
		Medium  8分
		掌握程度:能带吗实现堆,堆排序,,并掌握堆的三种应用(优先级队列,TOP K,中位数)
	13. 图的表示
		Easy 8分
		掌握程度:能理解图的三种表示方法(邻接矩阵,邻接表,逆邻接表),能代码实现
	14. 深度和广度优先遍历
		Hard 8分
		掌握程度:能代码实现广度优先,深度优先搜索算法
	15. 拓扑排序,最短路径,A*算法
		Hard  5分
		掌握程度:可以暂时不看
	16. 字符串匹配(BF,RK)
		Easy  7分
		掌握程度:能实现BF算法,看懂RK算法
	17. 字符串匹配(BM,KMP,AC自动机)
		Hard  3分
		掌握程度:不用浪费时间
	18. 字符串匹配(Trie)
		Medium  7分
		掌握程度:能看懂,知道特点和应用场景,不要求代码实现
	19. 位图
		Easy  6分
		掌握程度:看懂即可,能自己实现一个位图结构最好
	20. 四种算法思想(贪心,分支,回溯,动态规划)
		Hard 10分
		掌握程度:一定要掌握,能实现LeetCode上Medium难度的题目

你可能感兴趣的:(数据结构和算法)