数据结构
文章平均质量分 87
明朗晨光
You will never be ready!
展开
-
哈夫曼树详解
如果一篇文章全部编码后,最后一个字节实际有用的不是8位,即字节对不齐问题,那此时就要在传输的时候,在编码后的文章前面写明最后一个字节是几位有效的。传输的时候,需要传的是「编码后的文章 + 词频表」原创 2023-04-25 16:04:00 · 97 阅读 · 0 评论 -
哈夫曼编码与哈夫曼树
1. 信息传输问题的思考计算机与计算机是通过网络传输信息的,想从 AAA 电脑给 BBB 电脑传输字符,传输单位为比特,一个字符占 8 比特。如果想传输 100 个字符,就需要 100∗8=800bit100 * 8 = 800bit100∗8=800bit,这是总的信息量。信息传输时需要占用计算机网络,衡量网络传输效率(速度)的是网络带宽(每秒能传输的bit)。假设当前网络带宽为 100b/s100b/s100b/s,要传输 800bit800bit800bit 的数据就需要 8s。如果当前要传输的原创 2021-10-12 11:19:26 · 1083 阅读 · 0 评论 -
数据结构 | 6.森林与并查集
并查集能解决连通性问题,如 A=B,B=C,C=DA = B,B=C,C=DA=B,B=C,C=D 能推导出 A=DA=DA=D。Union−Find1. 连通性问题基于 染色 的思想,一开始所有点的颜色不同连接两个点的操作,可以看成将 一种颜色 的点染成 另一种颜色如果两个点颜色 一样,证明连通,否则不连通这种方法叫做并查集的【Quick-Find算法】2. Quick-find2.1 讲解视频讲解开辟一个数组,保存 0~9 的值,一开始颜色都不同,即将该数组里的每个位置的数原创 2021-10-07 22:55:08 · 301 阅读 · 0 评论 -
数据结构 | 5. 排序与查找
排序算法可以有几种分类方式,根据 是否稳定 可以分为 稳定排序 和 不稳定排序;如果输入的数据全部都要装入内存进行排序就是 内部排序,而如果数据量太大装不进内存,必须在磁盘或磁带上完成的排序叫做 外部排序。例如,有一份30G大小的数据,程序运行需要加载到内存中,冒泡和插入排序都是内部排序,假设内存只有16G,所以使用冒泡和插入加载不了,于是要使用外部排序——归并排序,先将15G加载到内存中,排完序后将数据放到磁盘中,再加载另外的15G数据到内存中进行排序。1、稳定排序(插入、冒泡、归并)1.1 插入排原创 2021-10-03 23:05:38 · 632 阅读 · 0 评论 -
数据结构 | 4. 堆与优先队列
堆与优先队列实质上是同一种东西,可以认为优先队列是堆的别名。1、完全二叉树完全二叉树的性质:如下的左右两个形式都可以表示完全二叉树,因为完全二叉树可以顺序编码,所以可以建立一个顺序结构进行存储,右边可以理解为代码表现形式。通常将 0 号位空出来,找某个节点的左右孩子时也是通过编号,比如 1 号位节点的左孩子为 (2∗1+1)=3(2 * 1 + 1) = 3(2∗1+1)=3 号节点,右孩子为 444 号节点。2、堆堆在思维逻辑上是一棵完全二叉树,但是堆之所以叫堆,因为它特有的性质:任何一个原创 2021-09-24 15:59:49 · 979 阅读 · 0 评论 -
数据结构 | 3.树与二叉树
在 栈和队列 一文中提到,栈可以处理具有 完全包含 关系的问题。而树分为两部分:结点 和 边。结点可以理解为集合,边称为关系。树的根结点就叫做全集,子节点叫做子集,子集并起来就得到了全集。根结点就是待解决的问题,可能是个大问题,可以划分为多个子问题,即是子结点。树也存在着一种完全包含关系。树和栈是有一定关联的,遍历树的时候就要使用栈,而且使用到的是系统栈,用到系统栈的表现形式就是递归。1、树的深度、高度和度树的根结点所在层数为第一层。结点下有几个子结点,度就为几。深度 是从根往下的层数,高度原创 2021-09-14 23:46:13 · 2002 阅读 · 0 评论 -
数据结构 | 2.栈和队列
文中代码基本都是由C语言实现,除了“2.3.4 Leetcode496”的代码实现。1.队列1.1 队列的性质FIFO:Fist In, First Out,即先进先出。队首出队,队尾出队。1.2 普通队列1.2.1 普通队列的代码实现#include <stdio.h>#include <stdlib.h>#include <time.h>//普通队列,存在假溢出问题typedef struct Queue { int *data;原创 2021-09-07 19:28:22 · 382 阅读 · 4 评论 -
数据结构 | 1.顺序表与链表
1、顺序表顺序表是一种更为高级的数组。数组的特点:一片连续的存储空间,存储相同类型的元素。顺序表可以存储任意类型的元素,但是一个顺序表只能存储同一种类型的元素。1.1 初版代码实现#include <stdio.h>#include <time.h>#include <stdlib.h>//顺序表结构定义typedef struct Vector { int *data; //连续的存储空间 int size; //顺序表可容纳的总元原创 2021-09-07 22:52:45 · 939 阅读 · 1 评论