
数据结构与算法
本专栏主要是笔者温习《数据结构与算法》的个人学习笔记小结
在屋顶听歌
Stay Focused And Work Hard !!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构小结
目录 一、时空复杂度 二、数据结构分类图 三、细分数据结构 1. 数组 2. 链表 3. 栈 4. 队列 5. 散列表 6. 跳表 7. 树 8. 图 一、时空复杂度 小结:通常所说的时空复杂度分析其实是描述程序运行过程中所需要的时间与额外空间的一种度量方式并非真实所需要的时间与空间,因此也称为渐近时间复杂度或渐近空间复杂度。 二、数据结构分类图 总结...原创 2019-07-01 18:54:21 · 562 阅读 · 0 评论 -
为何要学习数据结构(一)
一、为什么要学习数据结构与算法 二、如何高效系统的学习数据结构与算法 1. 如何定义数据结构与算法 2. 为啥数据结构与算法总是一起出现呢? 3. 如何高效地学习数据结构与算法? 前言 笔者于2015年普通本科院校毕业,在接近大四还很坚决自己不会走IT路,因此在相关专业课上算是得过且过了。没有耀眼的文凭,没有扎实的基础。 ...原创 2019-06-27 10:09:08 · 369 阅读 · 0 评论 -
数据结构之复杂度分析(二)
一. 什么是复杂度分析 二. 为什么需要复杂度分析 三. 如何进行复杂度分析 空间复杂度 四. 复杂度分析的细化 一. 什么是复杂度分析 衡量一段代码的执行效率最主要的无非是“快”、“省”,其中快是指运行速度快,省是指占用空间少。这里所指的复杂度分析指的是时间、空间复杂度。我们常说的以空间换取时间也正是对应这两点。 时间复杂度:代码执行时间随着数据量规模增长的变化趋势,这...原创 2019-06-07 10:34:54 · 688 阅读 · 0 评论 -
数据结构之数组(三)
目录 前言: 一. 数组的底层原理 数组如何实现随机读取 二. 数组的基本操作 删除操作的优化: 三. 数组常见的操作方法 四.可否用容器替代数组 五. 数组为啥在很多语言中都是以0为开始下标呢 前言: 常见的数据结构分为线性表与非线表,线性表有:数组、链表、队列、栈、哈希表(hash表),非线表有:树、堆、图等。 线性表的特点:以线的方式组织数据,每个线性表...原创 2019-06-07 10:33:27 · 334 阅读 · 0 评论 -
数据结构之链表(四)
目录 前言: 一、链表的底层原理 二、常见的链表 单链表 循环单链表 双链表 循环双链表 三、链表的基本操作 四、链表与数组性能对比 五、链表的实现代码 常见的 Java 链表容器 六、简述缓存机制 如何分别用链表和数组实现LRU缓冲淘汰策略? 如何通过单链表实现“判断某个字符串是否为水仙花字符串”? 七、链表的实际应用场景 前言: 在上一篇文章中我们学...原创 2019-06-07 22:38:43 · 369 阅读 · 0 评论 -
数据结构之栈(五)
目录 前言: 物理结构与逻辑结构 一. 什么是栈 二. 栈的应用场景 1. 首先由于栈是受限的操作结构,因此对于不想暴露过多操作接口的需求就很适合应用了。 2. 实现浏览器的前进与后退 3. 栈在函数调用中的应用 4. 栈在括号匹配中的应用 5. 栈在表达式求值中的应用 三. 栈操作的实现代码 前言: 在对...原创 2019-06-08 08:41:29 · 383 阅读 · 0 评论 -
数据结构之队列(六)
前言: 一. 什么是队列 二. 队列的实际应用 三. 队列的代码实现 1.数组实现(顺序队列) 2.循环队列(基于数组) 3. 链表实现(链式队列) 前言: 想必大家都有过在车站排队买票的经验吧,先来的排在前面,后来的依次往后排,当排在最前面的买到票则退出队列,这时排在后面的则跟上。其实这跟数据结构中的队列是同一个原理,先进先...原创 2019-06-16 23:08:44 · 293 阅读 · 0 评论 -
数据结构之散列表(七)
前言 一、什么是散列表 散列表是如何组织数据的呢? 散列表的基本概念 二、Hash算法的设计 什么是Hash算法 Hash算法的应用场景 三、散列表冲突的解决 1. 开放寻址法 2. 链表法 3. 开放寻址法与链表法的对比 四、散列表实际应用场景 1. 拼写检查器 2. LRU缓存淘汰算法 3. 高级语言中对应的容器 五、学习过程中的疑问 前言 散列表笔...原创 2019-06-18 22:13:52 · 681 阅读 · 0 评论 -
数据结构之跳表(八)
前言 一. 什么是跳表 二. 跳表的基本概念 1. 跳表的创建过程 2. 跳表的时空复杂性分析 3. 更新数据时跳表的维护 三. 跳表的实际应用场景 四. 学习过程中的疑问点小记 前言 有序数组运用数组随机读取的特性,通过二分查找法可实现快速查找,检索的时间复杂度为O(logN)。由于是对数的时间复杂度,因此随着数据量的增加其检索效率更凸显。例如在42亿的数据集...原创 2019-06-22 14:18:33 · 911 阅读 · 0 评论 -
数据结构之树(九)
目录 前言 一、什么是树 二、常见的树<二叉树> 链表式的存储二叉树 数组存储二叉树 三、二叉查找树(Binary Search Tree) 二叉查找树基本操作与时间复杂度分析 1. 查找 2. 插入 3. 删除 四、树的遍历 二叉查找树遍历代码实现 有了如此高效的散列表,为什么还需要二叉树呢? 五、树的应用场景 前言 在前面几篇博文学习了...原创 2019-06-23 18:52:10 · 346 阅读 · 0 评论 -
数据结构之图(十)
前言 一. 图的基本概念 二. 图的存储方式 1. 邻接距阵存储 2. 邻接表存储图 3. 十字链表 三. 图的实际应用 1. 存储微信或微博的好友关系 四. 图的遍历 广度优先遍历(BFS) 深度优先遍历简称 DFS 五. 学习过程中的疑问 前言 相信大家都有听过《哥尼斯堡七桥》这个故事吧,正是这个故...原创 2019-06-25 23:08:01 · 892 阅读 · 0 评论