数据结构(学习笔记)
文章平均质量分 70
韩顺平《数据结构与算法》
wmh1024
阿里云社区专家博主。鸟要高飞先振翅,人求上进先读书。
展开
-
【韩顺平-数据结构】递归(学习笔记)
一、递归概述递归:方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。二、递归的调用机制当程序执行到一个方法时,就会开辟一个独立的空间(栈)每个空间的数据(局部变量)都是独立的三、递归解决的问题各种数学问题如:8 皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题(google 编程大赛)各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等将用栈解决的问题 --> 递归代码比较简洁原创 2022-12-11 11:42:31 · 198 阅读 · 0 评论 -
【韩顺平-数据结构】图(学习笔记)
图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。(结点也可以称为顶点)原创 2023-08-04 13:54:20 · 83 阅读 · 0 评论 -
【韩顺平-数据结构】稀疏矩阵和队列(学习笔记)
队列是一个有序列表,可以用数组或链表实现遵循先入先出原则数组的结构存储队列元素,maxSize是队列最大容量两个变量front和rear记录队列前后端。原创 2023-08-04 13:49:36 · 75 阅读 · 0 评论 -
【韩顺平-数据结构】查找(学习笔记)
由斐波那契数列 F[k]=F[K-1]+F[k-2]的性质,可以得到 (F[k]-1)=(F[k-1]-1)+(F[k-2]-1)+1。顺序表长度n不一定刚好等于 F[k]-1,所以需要将原来的顺序表长度n增加至 F[k]-1。插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。对于数据量较大,关键字分布比较均匀的查找表来说,采用插值查找,速度较快.关键字分布不均匀的情况下,该方法不一定比折半查找要好。(F[k-1]-1):左边的子序列。(F[k-2]-1):右边子序列。原创 2022-12-28 01:52:20 · 211 阅读 · 0 评论 -
【韩顺平-数据结构】树结构应用(学习笔记)
赫夫曼树(Hufriman Tree):给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近赫夫曼编码是赫哈大曼树在电讯通信中的经典的应用之一赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~-90%之间赫夫曼码是可变字长编码(VLC)的一种Huffman于1952年提出一种编码方法,称之为最佳编码。原创 2023-08-04 14:05:37 · 93 阅读 · 0 评论 -
【韩顺平-数据结构】稀疏数组和队列(学习笔记)
需求:五子棋”存盘退出“ --> 二维数组保存问题:这个二维数组大部分都是默认值0,记录了很多没有意义的数据 --> 稀疏数组稀疏数组:数组大部分为同一个值处理方法:记录数组几行几列,有多少个的值。把不同值的行和列记录在小规模数组中。2)IO代码二、队列1、队列概述队列是一个有序列表,可以用数组或链表实现遵循先入先出原则数组的结构存储队列元素,maxSize是队列最大容量两个变量front和rear记录队列前后端原创 2022-12-07 07:00:00 · 164 阅读 · 0 评论 -
【韩顺平-数据结构】树结构基础(学习笔记)
二叉树:每个节点最多只能有两个子节点(左节点和右节点)满二叉树:二叉树的所有叶子节点都在最后一层,并且结点总数=2^n-1(n 为层数)完全二叉树:二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续前序遍历:先输出父节点,再遍历左子树和右子树中序遍历:先遍历左子树,再输出父节点,再遍历右子树后序遍历:先遍历左子树,再遍历右子树,最后输出父节点小结:看输出父节点的顺序,就确定是前序,中序还是后序。原创 2023-08-04 13:52:36 · 100 阅读 · 0 评论 -
【韩顺平-数据结构】十大算法(学习笔记)
分治法(Divide-and-Conquer§)是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。原创 2023-08-04 14:13:00 · 260 阅读 · 0 评论 -
【韩顺平-数据结构】哈希表(学习笔记)
散列表(Hash table也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。原创 2023-08-04 13:50:55 · 60 阅读 · 0 评论 -
【韩顺平-数据结构】多路查找树(学习笔记)
B 树通过重新组织节点,降低树的高度,并且减少 i/o 读写次数来提升效率。文件系统及数据库系统的设计者利用了磁盘预读原理,将一个节点的大小设为等于一个页(页得大小通常为 4k), 这样每个节点只需要一次 I/O 就可以完全载入。原创 2023-08-04 14:07:50 · 70 阅读 · 0 评论 -
【韩顺平-数据结构】排序(学习笔记)
冒泡排序(Bubble Sorting):通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的希尔排序是希尔 (Donald Shell)于 1959 年提出的一种排序算法。原创 2022-12-28 01:51:14 · 354 阅读 · 0 评论 -
【韩顺平-数据结构】栈(学习笔记)
后缀表达式适合计算式进行运算,但是却不太容易写出来,尤其是表达式很长的情况下。因此在开发中,我们常常需要将中缀表达式转成后缀表达式。原创 2022-12-10 16:20:35 · 101 阅读 · 0 评论 -
【韩顺平-数据结构】链表(学习笔记)
System . out . println("1.在尾部添加");System . out . println("2.按编号添加");System . out . println("3.遍历双向链表");System . out . println("4.修改节点");System . out . println("5.删除节点");System . out . println("6.有效节点个数");System . out . println("0.退出");原创 2022-12-09 17:32:09 · 293 阅读 · 0 评论