自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 排序算法。

比较排序是指通过比较数据元素之间的大小关系来进行排序,包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。其中,冒泡排序和插入排序的时间复杂度都是 O(n²),选择排序的时间复杂度也是 O(n²),但是快速排序、归并排序和堆排序的时间复杂度都可以达到 O(nlogn)。非比较排序是指不通过比较元素的大小关系来进行排序,可以通过元素的哈希值或者桶的排序等方式实现,常见的非比较排序有计数排序、基数排序和桶排序等。例如,冒泡排序和插入排序是稳定排序算法,而选择排序和快速排序是不稳定排序算法。

2023-06-12 12:57:42 82

原创 Prim 算法与 Dijkstra 算法

进行这个操作直到所有的节点都被覆盖。而 Dijkstra 算法是每次找出到源节点距离最近的一个没有被访问过的点,并把它标记为已访问,同时以这个点为基础更新从源点出发可以到达的所有点的距离。它们的时间复杂度也不同,Prim 算法的时间复杂度为 O(ElogV),其中 E 表示边的数量,V 表示点的数量,Dijkstra 算法的时间复杂度为 O(V²),其中 V 表示点的数量。Dijkstra 算法的目标是找到从源节点到图中所有其他节点的最短路径,计算的是每个节点与源节点之间的最短距离。

2023-06-12 12:54:24 1615 1

原创 二叉树的遍历

前序遍历的顺序是先访问根节点,然后递归访问左子树和右子树。中序遍历的顺序是先递归访问左子树,然后访问根节点,最后递归访问右子树。后序遍历的顺序是先递归访问左子树和右子树,最后访问根节点。在实现二叉树遍历时,可以使用递归或迭代的方式进行。递归的实现比较简单,但是可能会因为递归层数过深导致栈溢出。迭代的实现则涉及到栈或队列的使用,必须手动维护节点的访问顺序。二叉树的遍历有三种方式:前序遍历、中序遍历和后序遍历。这三种遍历方式都是指按照某种顺序访问二叉树中的所有节点。

2023-06-12 12:50:18 104

原创 哈夫曼编码

哈夫曼编码是一种可变长度编码,使用非等长编码对不同符号进行编码。它的主要思想是将出现频率高的符号用少量的位数进行表示,而出现频率低的符号则用较多的位数进行表示。2. 从哈夫曼树的根节点开始遍历,若走左子树则在编码末尾加"0",若走右子树则在编码末尾加"1",一直遍历到叶子节点止,将叶子节点的编码作为该字符的哈夫曼编码。3. 对数据进行编码,将每个字符替换为对应的哈夫曼编码,然后将所有编码进行拼接得到压缩后的编码。4. 解码数据,根据哈夫曼编码和哈夫曼树将压缩后的编码解压缩为原来的数据。

2023-06-12 12:37:14 1761 1

原创 链队列--数据结构

在进行dequeue时候,出队如果是最后一个元素,尾指针丢失,需要重新赋予尾指针地址。链队列中有两个指针,头指针front和尾指针rear,当两者相等时,表示队列为空。为了区分空队列和满队列,通常在结尾空出一个表示满队列。

2023-04-24 23:17:19 59

原创 括号匹配-栈的应用

【代码】括号匹配-栈的应用。

2023-04-24 23:15:05 56

原创 汉洛塔问题

【代码】汉洛塔问题。

2023-04-19 22:06:16 211

原创 线性表总结

链式存储线性表时,不需要使用地址连续的存储单元,即不要求逻辑上相邻的元素在物理位置上也相邻,它通过“链”建立起数据元素之间的逻辑关系,因此插入和删除操作不需要移动元素,而只需要修改指针,但也会失去顺序表可随机存取的优点。第一个元素存储在线性表的起始位置,第i个元素的存储位置后面紧接着存储的是第i+1个元素,称i为元素ai在线性表中的位序。静态链表借助数组来描述线性表的链式存储结构,结点也有数据域data和指针域next,与前面说的链表中的指针不同的是,这里的指针是结点的相对地址(数组下标),又称。

2023-04-19 21:49:39 321

原创 多项式加法

【代码】多项式加法。

2023-04-10 22:43:27 71

原创 数据结构之静态链表

备用链表的作用是回收数组中未使用或之前使用过(目前未使用)的存储空间,留待后期使用。也就是说,静态链表使用数组申请的物理空间中,存有两个链表,一条连接数据,另一条连接数组中未使用的空间。通常,备用链表的表头位于数组下标为 0(a[0]) 的位置,而数据链表的表头位于数组下标为 1(a[1])的位置。静态链表中设置备用链表的好处是,可以清楚地知道数组中是否有空闲位置,以便数据链表添加新数据时使用。比如,若静态链表中数组下标为 0 的位置上存有数据,则证明数组已满。数据域:用于存储数据元素的值;

2023-04-10 18:16:56 63 1

原创 单链表(c语言版)

(2).将结点插入链表:更改插入结点的指针域(此时指针域内的值来源于前驱结点指针域内的值)、更改前驱结点的指针域(此时指针域内的值为要插入结点的地址)。在插入数据时,一定要先将前驱的指针域的值先赋值给插入结的指针域,然后再更改前驱结点指针域的值,否则会造成后续结点的丢失。一定要把握好前驱和后继之间的关系,只有得到前驱结点才能对后继结点进行操作,因为单链表是逐一相连的,前驱结点的指针域中存放着后继结点的地址,也就是说失去前驱也就意味着丢失后继,所以在对前驱结点的指针域做改动时一定要进行备份,不能让其丢失。

2023-03-29 22:37:45 302

原创 数据算法与结构--线性表

【代码】【无标题】

2023-03-26 14:04:05 78 1

原创 数据结构 感

常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图,堆。1.逻辑结构--数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。常用的线性结构有:线性表,栈,队列,双队列,数组,串。数据结构的研究内容为:非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。2.存储结构(物理结构) --数据元素及其关系在计算机存储器中的存储方式。4.数据对象:相同特性的数据元素的集合,是数据的一个子集。借助指示元素存储地址的指针表示数据元素间的逻辑关系。

2023-03-22 20:13:09 310 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除