数据结构概述
1、为什么要学习数据结构
(1)数据结构是所有计算机专业的同学必学的课程;
(2)数据结构研究的是数据如何在计算机中进行组织和存储的,使得我们可以高效的获取数据或者修改数据;
2、数据结构分类
(1)线性结构
数组;栈;
队列;链表;
哈希表……
(2)树结构
二叉树;二分搜索树;
AVL;红黑树
Treap;Splay;
堆;Trie;
线段树;K-D树;
并查集;哈夫曼树……
(3)图结构
邻接矩阵;邻接表;
我们需要根据不同的应用,灵活选择最合适的数据结构
3、计算机世界里,数据结构无处不在
(1)数据库场景
数据库底层是通过很多数据结构制作而成的,数据库主要目的就是用来存储数据的。
(2)操作系统场景
操作系统底层也是通过很多数据结构制作而成的。
系统栈:递归调用就需要借助系统栈空间。
堆:主要用于组建优先队列数据结构,通过比较优先队列优先级来进行多任务切换。
操作系统支持快速在多任务间切换
(3)文件压缩场景
简单的压缩算法可以使用哈夫曼树数据结构,但是下面文件格式并不是全部使用哈夫曼树数据结构。
(4)通讯录场景
通讯录产品:微软当时的一款使用链表数据结构来存储联系人,但是当联系人数量越来越大的时候,查询联系人是非常缓慢的。后来这个问题被微软一个实习生解决了,他使用了一种Trie-前缀树数据结构来解决的。不管你的通讯录数量有多大,查询联系人都是毫秒级别的。
(5)游戏场景
DFS:深度优先算法;
BFS:广度优先算法;
数据结构 + 算法 = 程序
4、常用数据结构学习
(1)面向面试数据结构
数组;栈;队列;链表;二分搜索树;堆;
(2)面向竞赛数据结构
线段树;Trie;并查集;
(3)世界性的计算机题库网站
后面章节笔记主要内容:
- 递归;调试;简单的复杂度分析;
- 底层实现;创建自己的小型数据库;
- 数据结构的优化和比较;
如果感兴趣的童鞋,可以观看我下一篇博客:学习数据结构(和算法)到底有没有用?