尚硅谷数据结构学习
文章平均质量分 79
整理在B站学习尚硅谷网课的数据结构课程学习笔记,很抱歉后续的笔记不再更新
小智RE0
慎独
展开
-
B站学习数据结构笔记(1)=====>稀疏数组
学习来源–>传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)程序==数据结构+算法数据结构包括 线性结构与非线性的结构线性结构: 特点;数据元素之间存在着一对一的线性关系;但是;线性结构又分为顺序存储结构(顺序表)与链式存储结构(链表)顺序表:元素连续;链表: 元素不一定连续;元素的节点中会存储数据元素以及相邻的元素的地址信息;常见线性结构->数组,队列,链表,栈非线性结构二维数组;多维数组;广义表;树结构;图结构比如说有一块原创 2021-10-30 21:52:03 · 85 阅读 · 0 评论 -
近期学习数据结构笔记(2)=====>队列
学习来源–>传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)队列:先见先出的结构是有序的列表; 可以用数组/链表存储数据;例如->数组存储结构; maxSize:最大容量;对于数组存储的话,就考虑数组的索引问题,数组是由0索引开始的,那么实际上这个队列在 (maxSize -1)的时候就满了;在向队列存储数据的时候,首先要考虑判断队列是否满了;添加后队列的个数要增加1个;删除的时候还要考虑让队列的元素个数减少1个;队列为空的情况–> 头指针原创 2021-10-31 13:48:32 · 80 阅读 · 0 评论 -
学习数据结构笔记(3)=====>链表
学习来源–>传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)链表存储结构 不一定就是连续的;比如下面这个单链表;链表由一个个地节点组成; data 存放实际数据,next类似于一个指针;指向下一个节点;最后一个节点的指针next指向 null;还有,链表不一定都需要头节点;ml单向链表实现单向链表相关题1.求出单链表的实际存放节点个数2. 查询单链表的倒数第k个节点3.单链表反转4.由尾到头打印单链表单向链表实现案例,完成一个存放英雄的链表,可以增删原创 2021-11-01 22:31:25 · 84 阅读 · 0 评论 -
学习数据结构笔记(4)=====>栈
学习来源–>传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)案例引入;一个计算器的运算原理比如说 输入 5*6+3-2 ;计算器收到的是一个字符串,他就得一个一个分隔这些字符;然后计算;栈(Stack) 先进后出的有序列表结构;(FILO)最先放入的元素在栈底,最后放入的在栈顶;ml1.栈的基本实现1.栈的基本实现自定义实现的话,这里直接用数组作为底层存储数据结构;初始化栈时,定义栈顶的指针为 -1 ;入栈一个,就让栈顶加+1;然后数组存入一个原创 2021-11-03 14:02:36 · 125 阅读 · 0 评论 -
学习数据结构笔记(5)=====>递归
学习来源–>传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)推荐这位大佬的文章 ;掌握递归—>什么是递归,通过这篇文章,让你彻底搞懂递归ml1.递归的简易案例2.迷宫问题3.八皇后问题1.递归的简易案例递归,在方法自身内调用自己,但是传递参数不同; 调用后一直到最后,然后再一步步地把获得的结果返回到调用的位置.public class Demo { public static void main(String[] args) {原创 2021-11-03 23:48:34 · 137 阅读 · 0 评论 -
学习数据结构笔记(6)====>八大排序算法(Sort Algorithm)[冒泡,选择,插入,快速,希尔,基数,归并,堆排序]
学习来源–>传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)排序: 把一组数据,依指定顺序进行排列的过程.ml1.时间复杂度概述时间频度时间复杂度1.时间复杂度概述时间频度时间频度(T(n)) 算法中语句的执行次数案例时间频度为 (n+1);这里的n就是100;加1是因为最后在循环时还要再判断一次;public class Demo01 { public static void main(String[] args) {原创 2021-11-06 17:48:47 · 141 阅读 · 0 评论 -
学习数据结构笔记(7) ---查找算法(线性查找,二分查找,插值查找,斐波那契查找)
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)ml1.顺序/线性查找算法1.顺序/线性查找算法原创 2021-11-09 03:16:00 · 527 阅读 · 0 评论 -
学习数据结构笔记(8) ---[哈希表(Hash table)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)一般在java程序访问数据库时都会安排从内存的缓存层中取数据;之前的做法是自己写个哈希表,实现对数据的缓存.哈希表(散列表) 作为一种数据结构,而不是算法通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。那么该如何实现呢,通过完成这个案例来实现;领会哈希表的结构有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄原创 2021-11-09 18:48:20 · 960 阅读 · 0 评论 -
学习数据结构笔记(9) --- [二叉树学习(BinaryTree)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)原创 2021-11-11 22:24:07 · 739 阅读 · 0 评论 -
学习数据结构笔记(10) --- [赫夫曼树(Huffman Tree)与赫夫曼编码(Huffman coding)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录1.赫夫曼树的相关概念2.赫夫曼树的创建过程1.赫夫曼树的相关概念赫夫曼树是带权路径长度最短的树;并且权值较大的树距离根结点比较近路径就是:从一个节点出发,到达它的子节点,或者孙子节点,经过的通路;就是路径;路径长度的话;比较简单的计算方法; 比如我认为根结点所在的位置是第一层;那么假如这棵树有M层;那么从根结点到达第M层的路径长度就是(M-1);那么,我从第1层的节点到第4层的节点路径长度就是(4原创 2021-11-18 16:25:58 · 960 阅读 · 0 评论 -
学习数据结构笔记(11) --- [二分搜索树(BinarySearchtTree)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录1.二分搜索树2.创建二分搜索树,以及添加节点的方法图解过程具体实现3.在二分搜索中删除节点????图解二分搜索树中删除结点的具体实现1.二分搜索树前面已经学习过二叉树,赫夫曼树的知识了;接下来学习二分搜索树的知识;我们知道二叉树的结构就是父节点挂接左右子节点;二分搜索树的首先是个二叉树;然后融合了二分搜索的思想;二分搜索树又称为二分排序树; 这种树的特点是,它的左子树上挂接的节点是小于根结点的; 右原创 2021-11-20 11:20:38 · 396 阅读 · 0 评论 -
学习数据结构笔记(12) --- [平衡二叉搜索树(AVLTREE)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录案例情景引入左旋转图解通过代码实现右旋转图解右旋转的具体实现双旋转处理案例情景引入比如给出一组数字1,2,3,4,5,6,要把它排成二叉搜索树;那是不是就得变成下面这样的树;仔细看的话,比较像是单向链表;增删比较快,但是查询时比较慢;由于树在查询时还要检索,效率甚至会更慢;平衡二叉搜索树(Self-balancing binary search tree);左右两棵子树的高度之差不会超过1;平衡二原创 2021-11-25 10:05:36 · 325 阅读 · 0 评论 -
学习数据结构笔记(13) --- [多路查找树的概念以及原理说明]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录2 - 3树(2-3Tree)图解2-3树案例创建过程B树(BTree)B+树B*树要把二叉树加入到内存中;构建二叉树,需要多步的IO流操作;要是节点非常多的话,效率会受到影响; 同时节点过多,二叉树太高了;操作速度会变慢;那么就得引入多叉树的学习了,那么就得给节点存放多个数据项;且这个节点下挂接多个子节点;这样就能降低树的高度;从而达到优化效果.比如说这个2-3树;2 - 3树(2-3Tree)原创 2021-11-25 15:33:46 · 1055 阅读 · 0 评论 -
学习数据结构笔记(14) --- [图]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录1.图的概述(1)无向图(2)有向图(3)带权图(4) 图的表示方式2. 用代码实现无向带权图的创建3.对图进行深度优先搜索(DFS)4.进行广度优先搜索(BFS)图的基本构成代码总结(包括深度优先搜索,广度优先搜索)1.图的概述????百度百科之图论图也是一种数据结构,这个在离散数学以及运筹学原理与应用这两门数学课程中有学习过结点(顶点) 之间的连接线就是边;顶点附近可以有0个或者多个相邻顶点;(原创 2021-11-25 20:47:39 · 600 阅读 · 0 评论 -
学习数据结构笔记(15) --- [二分查找算法(非递归)]
力扣这道题其实就是二分查找的基础考察题目704. 二分查找写完可以多找几道二分查找的题试试二分查找的前提是这个数组是一个有序的数组;我们这里将规定为升序数组;定义中间数值的索引; 若要找的目标值就是这个中间值,直接返回即可;若找的目标值大于中间数,则将查询范围缩小到中间数的右边;若找的目标值小于中间数,则将查询范围缩小到中间数的左边;/** * 在升序数组中查找目标数值的索引; * @param array 升序的数组; * @param target 目标值原创 2021-11-26 17:35:09 · 606 阅读 · 1 评论 -
学习数据结构笔记(16) --- [分治算法(由汉诺塔问题引入)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录分而治之算法,将一个复杂问题细分为一个个小问题,逐一解决;是很多排序算法的基础;例如快速排序,归并排序这里学习的话 由汉诺塔问题展开;—>百度百科之汉诺塔问题;将A塔的圆盘移动到C塔情况1:若A塔只有一个圆盘;直接将A塔的圆盘放到C塔即可情况2:当A塔有两个圆盘;先把小圆盘放到B塔上;然后把大圆盘放到C塔上;然后在把小圆盘放到C塔的大圆盘上,完成;情况3当A塔有三个圆盘;.原创 2021-11-29 14:06:10 · 461 阅读 · 1 评论 -
学习数据结构笔记(17) --- [动态规划(由背包问题引入)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录1.情景引入2.背包问题分析3.背包问题的解决1.情景引入一个简单的0-1背包问题;规定背包的最大容量是4公斤;并且放入背包的物品不能重复,怎么样让背包的物品价值量最大化?物品重量价值电脑16000电子琴48000游戏机33000动态规划算法的思想也是将复杂问题规划分解为小问题,但是和分治算法不同的地方是,动态规划算法分解得到的子问题有递进关系;子问题原创 2021-12-02 15:44:51 · 633 阅读 · 0 评论 -
学习数据结构笔记(18) --- [KMP算法]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)KMP算法这部分看视频讲解的话,还不是很清楚,根据视频的推荐,找到这篇很全面的文章—>推荐看大佬的文章–>从头到尾彻底理解KMP文章目录1.情景引入2.暴力匹配字符串方法实现3. KMP匹配算法1.情景引入关于字符串的匹配问题;主字符串1 —> str1 = " 我是一条很长的字符串我是被匹配的字符串 " ;字符串2 —> str2= " 被匹配的 ";若字符串1包含字符串2,则返原创 2021-12-04 19:36:03 · 537 阅读 · 0 评论 -
学习数据结构笔记(19) --- [贪心算法(由电台覆盖区域求最优解问题引入)]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)情景引入付费的广播台与该广播台可覆盖的地区,如何选择最少的广播台,覆盖所有地区;广播台可覆盖的地区K1北京 上海 天津K2北京 广州 深圳K3成都 上海 杭州K4天津 上海k5大连 杭州贪心算法: 对于问题的每一步求解过程中都采取最优的解;贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择;百科分析若使用穷举法;列出可能搭配的广播台集合原创 2021-12-08 02:45:00 · 353 阅读 · 0 评论 -
学习数据结构笔记(20) --- [普利姆算法(PrimAlgorithm) 由村庄的修路问题找最短权值引入]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录情景引入步骤分析具体实现情景引入假设现有7个村庄准备修公路,怎么样选择,才能让修路的里程最短并且连通所有的村庄?直接连通的话,可能权值就比较大了;那么这道题目其实可以转换为求解构建最小生成树的问题;最小生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求原创 2021-12-08 03:45:00 · 393 阅读 · 0 评论 -
学习数据结构笔记(21) --- [克鲁斯卡尔算法(Kruskal Algorithm) 由公交车站连接问题引入]
B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)文章目录情景引入分析解决情景引入某个城市需要连接7个公交站;需要设计出最短路径的路线进行建设;克鲁斯卡尔算法与普里姆算法不同,它的时间复杂度为O(eloge)(e为网中的边数);适合于求边稀疏的网的最小生成树分析先找到权值最小的边FE;进行连接排除已使用的边,找到权值最小的边CD;连接找到权值最小的边DE;连接在不构成回路的情况下,找到权值小的边BF;连接原创 2021-12-19 00:30:00 · 630 阅读 · 0 评论