- 博客(17)
- 收藏
- 关注
原创 哈希查找算法
哈希查找算法又称散列查找算法,是一种借助哈希表(散列表)查找目标元素的方法,查找效率最高时对应的时间复杂度为 O(1)。哈希查找算法适用于大多数场景,既支持在有序序列中查找目标元素,也支持在无序序列中查找目标元素。讲解哈希查找算法之前,我们首先要搞清楚什么是哈希表。哈希表(Hash table)又称散列表,是一种存储结构,通常用来存储多个元素。和其它存储结构(线性表、树等)相比,哈希表查找目标元素的效率非常高。
2023-06-13 02:42:17
1743
1
原创 查找算法分析
计算机查找通常是指在计算机中进行数据检索的过程。它是一种基本的操作,用于从大量数据中快速找到所需的信息。计算机查找通常包括以下几个步骤:确定要查找的数据的类型和范围。确定要用于查找的关键字或条件,如名称、日期、关键词等。使用查找算法在数据集合中查找满足条件的数据。显示或处理查找结果。常见的查找算法包括线性查找、二分查找、哈希查找等。在实际应用中,选择合适的查找算法不仅可以提高查找速度,还可以降低计算机资源的消耗。
2023-06-13 02:31:09
141
原创 单源最短路径算法——Dijkstra算法
Dijkstra是一种求单源点最短路径的算法,即求某一个顶点到其余各顶点之间的最短路径,解决单源(只有一个开始顶点)最短路径的算法为Dijkstra,而该算法的核心思想是贪婪算法。Dijkstra算法也是按阶段进行,在每个阶段选择离开始顶点最近的顶点(未访问),我们对每一个顶点(vertex)保留其临时的dis,这个距离是开始顶点v到所访问的顶点的实际的路径长,我们每次要对dis值要进行更新。b,求下一条最短路径,因为有新的结点加入到s集合中,所以需要修改从v0到其余不属于s的顶点之间的D[i]上的值。
2023-06-13 02:26:50
320
原创 图的创建和遍历(邻接表、邻接矩阵存储实现BFS、DFS)
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。在学习图的过程中,知道图中存储的数据称为顶点,无向图连接顶点之间关系的称为边,有向图连接顶点的称为弧,弧的起点为弧尾,终点为弧头。图可以根据边有无方向,分为无向图和有向图,只要存在有方向的边,则为有向图,全部为无方向边的图,则为无向图。
2023-06-13 02:13:20
1849
原创 哈夫曼树和哈夫曼编码
代码写得比较急,在调试时出现不能访问文件的错误,估计是Clion编译器CMake项目在编译文件时把编译文件放在cmake-build-debug文件夹里,访问不到。目前处于只能统计权重的状态,后续改进后把运行结果放上来。
2023-05-11 00:44:34
86
原创 二叉树的性质和遍历代码实现
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点。
2023-05-11 00:19:10
209
原创 链式队列设计
所谓队列的链式存储结构是用一个线性链表来表示一个队列,队列中每一个元素对应链表中一个链结点,这样的队列简称链接队列。具体地说,把线性链表第1个链结点的指针定义为队头指针front,在链表最后的链结点建立指针rear作为队尾指针,并且限定只能在链头进行删除操作,在链尾进行插入操作,这个线性链表就构成了一个链接队列。另一个与顺序存储结构队列的不同点是,队头指针与队尾指针都是指向实际队头元素与队尾元素所在的链结点。
2023-04-24 19:59:12
82
原创 栈的应用——括号匹配
括号匹配是栈特性后进先出(Last In First Out),LIFO的一个很好的体现,在栈里完成匹配并进行进出栈的操作。
2023-04-24 19:17:54
318
原创 汉诺塔问题和常见计算机思想的总结
汉诺塔描述:该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
2023-04-19 01:35:08
274
原创 线性表总结
单链表是线性表的链式存取结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元指针就是连接每个结点的地址数据。静态链表是一种比较高级的线性存储结构,融合顺序表和链表的优点,既能快速访问元素,又能快速增加或删除数据元素。静态链表存储数据,数据全部存储在数组中(此处类似顺序表),但存储位置是随机的,数据之间"的逻辑关系通过一个整形变量——next进行维持(此处理类似链表)。
2023-04-19 00:37:08
299
原创 链表实践:多项式的加法
判断条件:当p的指数小于q的指数时:将p链接在r的后面。当p的指数大于q的指数时:将q链接在r的后面。当p的指数等于q的指数时:a.相加系数和为0,则删去该节点。b.系数不为0,则相加成功。
2023-04-09 16:05:33
281
1
原创 静态链表代码设计
功能如下:initLinkedList() :初始化静态链表。printList():打印静态链表数据。insertElement():向静态链表指定位置插入数据。deleteElement():删除静态链表中的数据。新增outputMemory():打印链表结点的数据和地址。
2023-04-05 23:45:05
127
1
原创 链表代码设计
initLinkList():初始化链表。printList():打印链表。appendElement():添加元素。insertElement():指定位置添加。deleteElement():删除元素。新增outMemory():打印地址。
2023-03-29 15:26:42
60
原创 顺序表代码设计
sequentialListInit():顺序表初始化。sequentialListInsert():插入数据。sequentialListDelete():删除数据。locateElement():已知数据求位置。outputMemory():打印顺序表地址。getElement():已知位置求数据。outputList():打印顺序表数据。outputMemory():打印顺序表地址。
2023-03-27 22:45:31
77
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人