RodneyX

博客园 首页 新随笔 联系 订阅 管理

2025年8月19日 #

摘要: BST,即二叉搜索树,该数据结构规定任意若一个结点存在左子树,那么该结点键必须要大于左子树上所有键;若有右子树,那么该结点键必须要小于右子树上所有键 简单的BST是树形查找里的入门级数据结构,不涉及平衡性调节,只需要简单插入删除,即可,其中删除稍复杂,但是也不难,只需要把三种情况分清即可。简单的BS 阅读全文
posted @ 2025-08-19 08:32 RodneyX 阅读(21) 评论(0) 推荐(0)

2025年8月18日 #

摘要: 这个没什么好说的,规则很清晰,代码注释里说明白了,就看你记不记得住这几条规则了。另外作者没学过编译原理,所以只能写这种简陋的东西。不过还是希望能给初学者带来帮助。 #include <stdio.h> #include <stdlib.h> // We assume that s[] is an l 阅读全文
posted @ 2025-08-18 19:50 RodneyX 阅读(7) 评论(0) 推荐(0)

2025年8月12日 #

摘要: 这个就不谈原理了,很简单的,按课本上写的哈夫曼树构造的算法描述直接写就是了。这里采用常规操作,用小顶堆来加快构造速度,见https://www.cnblogs.com/RodneyTang/p/19013567 代码如下 /*****file:HuffmanTree.h*****/ #ifndef 阅读全文
posted @ 2025-08-12 16:35 RodneyX 阅读(4) 评论(0) 推荐(0)

2025年8月9日 #

摘要: 弗洛伊德算法是用于求解无负权回路的图的任意一对顶点间最短路径的算法,该算法采用的基本思想是动态规划(转移方程就是cost[i][j] = cost[i][k] + cost[k][j] < cost[i][j] ? cost[i][k] + cost[k][j] : cost[i][j]) 算法步骤 阅读全文
posted @ 2025-08-09 16:41 RodneyX 阅读(10) 评论(0) 推荐(0)

2025年8月4日 #

摘要: 拓扑排序的结果序列反应了有向图中前顶点的前驱后继关系。所以,手算拓扑排序很简单,每次检查入度为0的顶点,删除从此顶点出发的边,将该顶点加入拓扑排序序列即可。 Kahn算法其实就是模拟这个过程,不过其核心的优化在于将采用BSF的方式来进行,同时维护一个入度数组,每次加入一个顶点就更新入度数组,并且若入 阅读全文
posted @ 2025-08-04 10:06 RodneyX 阅读(60) 评论(0) 推荐(0)

2025年8月2日 #

摘要: 克鲁斯卡尔算法是一种常见的用于构造最小生成树的算法,其基本思想是选择n-1(n为顶点数)条权值最小的,且不构成环的边。由于需要选择n-1一条最小权值的边,故可以以这些边为元素依据边权值作堆排序来进行选择。另外,判断构成环与否的方式是利用并查集,检查一条边的两个顶点,若两个顶点都属于某个集合那么选择这 阅读全文
posted @ 2025-08-02 14:27 RodneyX 阅读(23) 评论(0) 推荐(0)

2025年7月31日 #

摘要: 并查集是一种简单而有用的数据结构,一般是用数组来实现,数组下标是元素编号,而数组内容存储的是元素所在集合的根(或者是按树形组织下的该元素前驱,而根这个概念本身也是树这一数据结构的概念) 并查集的操作非常简单包括初始化并查集,查询元素所属的集合(用根元素来标识一个集合),合并两个不相交的集合 初始化并 阅读全文
posted @ 2025-07-31 11:55 RodneyX 阅读(30) 评论(0) 推荐(0)

2025年7月30日 #

摘要: 选择排序的基本思想是,在待排序序列A[p...n-1]中选择一个最值加入到A[0...p-1]中,形成更长的有序序列A[0...p],初始时有序表仅有一个元素,对于表长为n的表,经过n-1次选择即可排序完成,针对选择最值方式的不同,有两种基本的算法,一个是简单选择排序(暴力选择),一个是堆排序(基于 阅读全文
posted @ 2025-07-30 21:09 RodneyX 阅读(16) 评论(0) 推荐(0)

摘要: 首先给出数据结构的定义 #define MAXSIZE 50 //vertexs only support numbering from 0 to 49 // vertex numbering should be sequential numbers and start from zero to s 阅读全文
posted @ 2025-07-30 16:39 RodneyX 阅读(21) 评论(0) 推荐(0)

2025年7月26日 #

摘要: 交换排序的基本思想: 每次比较无序表L[0...n-1]中相邻两个元素大小,若为逆序则交换 一般常见的交换排序有两个,一个冒泡排序(非常简单),一个是快速排序(内部排序平均效率最好的排序算法) 冒泡排序的基本思想: 从前往后,每次比较无序表L[0...n-1]中相邻两个元素大小,若为逆序则交换 以结 阅读全文
posted @ 2025-07-26 15:33 RodneyX 阅读(8) 评论(0) 推荐(0)