数据结构
帅得真的是无敌了
这个作者很懒,什么都没留下…
展开
-
非线性存储结构
数据结构可以分为逻辑结构和物理结构物理结构是指数据的逻辑结构在计算机中的存储形式。逻辑结构是指线性结构和非线性结构。1.线性结构可以分为顺序存储结构和链式存储结构数组也是顺序存储结构;1.1 顺序存储结构的特点有: a.内存空间是连续的; b.因为内存空间是连续的,所以需要预先估计表(数组)的大小;(缺点) c.当表的长度变化较大时,难以确定合适的大小;(缺点) d.在删除和插入时,需要将大量元素往后移;(缺点) e.但是在查找时可以根据数组的首地址+(元素下标*基本类型所分配的内存大小原创 2022-03-11 09:14:41 · 1116 阅读 · 0 评论 -
哈夫曼编码
哈夫曼编码:哈夫曼编码是广泛地用于数据文件压缩的一个十分有效的编码方法。压缩率在20%~90%之间。哈夫曼编码算法用一个字符在文件中出现的频率表来建立一个用0,1串表示字符的最优表示方式。即频率越高,0,1串就越简短,从而整体的内存也会被压缩下来;哈夫曼编码的构造:1.将n个结点分别作为n棵仅含一个结点的二叉树,构成森林F;2.构造一个新结点,从F中选取俩棵权值最小的树作为新结点的左右子树,并且将新结点的权值置为左右子树的权值之和;3.从F中删除刚才选出的俩棵树,同时将新构造的树加入F中;4原创 2022-03-10 16:48:06 · 1077 阅读 · 0 评论 -
线性存储结构
1.线性结构可以分为顺序存储结构和链式存储结构数组也是顺序存储结构;1.1 顺序存储结构的特点有: a.内存空间是连续的; b.因为内存空间是连续的,所以需要预先估计表(数组)的大小;(缺点) c.当表的长度变化较大时,难以确定合适的大小;(缺点) d.在删除和插入时,需要将大量元素往后移;(缺点) e.但是在查找时可以根据数组的首地址+(元素下标*基本类型所分配的内存大小)进行快速的查找(优点) f.因为内存空间是连续的,所以可以通过内存地址来确定元素之间的逻辑关系;(优点)1.2 链原创 2022-03-10 16:41:36 · 928 阅读 · 0 评论 -
高级冒泡排序
高级冒泡排序#include <stdio.h>int main() { int a[] = { 1,2,3,4,5,6,7,9,8,5 };//3,2,4,1,23,23,24,47,17,13,58 int len = sizeof(a)/4;//sizeof是拿到内存分配的大小,需要除以基本类型 for (int i = 0;i<len;i++) { //用来判断是否已经完成排序 int flag = 0; for (int j = 0;j < len原创 2022-03-06 17:43:07 · 191 阅读 · 0 评论 -
快速排序优化
快速排序,排序一哥1.调用快速排序QSort1函数时,判断数组长度是否大于某个常数:大于时,调用快速排序方法;小于时,调用直接插入排序方法;2.先执行Partition1函数2.1执行Partition1函数时会先进行三数取中(数组长度大时可以9数取中);2.2然后将该值赋值给0下标,采用替换的方法进行排序;2.3规则就是将小于该中间值的替换到左边,大的替换到右边; 第一次执行的时候low下标指向中间值的下标;所以先执行high下标的值是否大于0下标的值: 如果是大于的话原创 2021-05-29 00:22:38 · 82 阅读 · 0 评论 -
归并排序
归并排序1.通过定义一个局部的空数组TR2用以存储下一次递归排序后的有序数组;每次递归都会创建一个局部的空数组TR2;2.将传入的数组的首尾下标相加除2,用以分割处理该数组;直至首尾下标相同则不再继续往下分割处理并将首尾下标相同作为原数组SR的下标,将该值赋值给将首尾下标相同作为下标的此时的TR1;分别调用分割后的数组,每次递归都分成俩半,分开处理,处理后存储在TR2中;开始的即第一次函数TR2空数组在下一次递归函数即第二次函数中是扮演第二次函数的TR1数组的角色;即在第二次递归函数中,TR1数原创 2021-05-03 15:37:56 · 88 阅读 · 0 评论 -
堆排序
堆排序1.构建堆1.1堆排序利用完全二叉树的性质,做到只处理双亲结点;先让双亲结点的左右子树进行比较,先求出大的子树,再将双亲结点与他的左右子树中大得结点比较: 若双亲结点大于大的子树,则退出,执行另外一个双亲结点(从小到大); 若双亲结点小于大的子树,则进行位置互换,则判断大的子树位置下标乘2是否>=该排序表长度; >=时,证明该大的子树结点存在子树;按照前面的步骤继续执行; 直到<时,退出,执行另外一个双亲结点。2.将堆顶记录和当前未经排序的子序列的最后一个原创 2021-05-02 11:46:38 · 117 阅读 · 0 评论 -
希尔排序
希尔排序1.希尔排序就是将顺序表长度进行划分为几个增量序列increment,2.for循环从第二个增量序列开始,顺序表到末尾结束,每次比较i的下标的值和i-increment的下标的值;即跟i前面的值做比较;当i的下标的值<i-increment的下标的值时:将下标i的值先存进0下标,j=i-increment>0并且j下标的值>0下标的值,将j下标的值存入j+increment下标,如果将j-=increment>0时,即i下标大于第二序列的长度并且j下标的值&g原创 2021-05-01 20:00:14 · 118 阅读 · 0 评论 -
平衡二叉排序树
平衡二叉排序树平衡二叉排序树是在插入函数中处理当传入的T的第一层为NULL,即为整颗树为空时,对该结点进行插入操作,并修改taller变量为TRUE,最后该函数结束返回一个TRUE;表示插入成功或者当传入的T的第一层为不为NULL,即为整颗树不为空时,则有三种情况:1、当要插入的结点的data值e等于T的data值时;taller值为FALSE,返回一个FALSE值,表示插入失败。2、当要插入的结点的data值e小于T的data值时;递归调用该函数,并传入T的左子树,e,taller;当原创 2021-04-26 13:32:05 · 197 阅读 · 0 评论