自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 选择排序(堆排序和归并排序算法)

完全二叉树的最大父节点的索引为n/2。(n为数组元素个数)实现(逻辑上是二叉树),对于数组中索引为。三、归并排序:利用分治法的思想实现的排序。,直到全部待排序的数据元素排完。1)父结点与子节点存在。堆的物理存储通常使用。

2025-07-14 22:37:48 367

原创 冒泡排序和快速排序算法

冒泡排序的基本思想是多次遍历数组,每次比较相邻元素并交换顺序错误的元素,使较大的元素逐渐 "冒泡" 到数组末尾。:在传统冒泡排序中,无论数组是否已经有序,算法都会执行固定的n-1轮比较(n为数字个数)。:提前终止机制(通过设置flag来判断数组是否已经有序,若是则终止循环)

2025-07-13 16:38:27 225

原创 插入排序(直接插入排序和希尔排序)

将一个记录插入到已经排好序的有序表中,得到一个长度+1的有序表。所以,希尔排序又叫缩小增量排序。(这里需要注意哨兵的使用)

2025-07-12 16:59:30 485

原创 散列表查找(哈希表)

(散列函数)将关键字(Key)映射到存储位置的方法,目的是快速定位数据。其核心思想是将数据的存储位置与关键字建立直接关联,从而实现高效的查找、插入和删除操作。:散列表是一种基于散列技术实现的数据结构,它通过哈希函数将关键字映射到数组的某个位置(槽,Slot),从而实现快速访问。:将所有哈希地址相同的元素存储在同一个链表中。哈希表每个位置对应一个链表头节点,冲突的元素插入到对应链表中。:这是最常用的构造方法,对关键字取模,求出余数,让余数作为散列地址。:【f(key)=key%p(p<=散列表的长度)】

2025-07-11 14:44:09 310

原创 平衡二叉树

构建平衡二叉树的基本思想:在构建二叉排序树的过程中,每插入一个结点,先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡树,对其进行调整,使其成为新的平衡子树。构建平衡二叉树的基本思想:在构建二叉排序树的过程中,每插入一个结点,先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡树,对其进行调整,使其成为新的平衡子树。最小不平衡子树:距离插入结点最近,且平衡因子的绝对值大于1的结点的根的子树称为最小不平衡子树。这个函数的关键是处理后相关结点的BF的计算,也是最难的一个点。

2025-07-10 17:04:27 609

原创 二叉排序树

一、二叉排序树:又称二叉查找树,当它不为空时,具有以下性质: 1)若他的左子树不为空,则左子树上所有结点的值均小于其根值。 2)若他的右子树不为空,则右子树上所有结点的值均大于其根值。 3)他的左右子树也均为二叉排序树。二、二叉排序树的插入和创建: 二叉排序树的创建:将结点一个个插入。参考代码:运行结果: 由此可知二叉排序树中序遍历的结果是升序的。 三、二叉排序树的查找算法:基本思想和插入算法类似参考代码:在处理大量数据时使用递归可能会导致栈溢出,也可以使用以下代码: 四、

2025-07-09 22:30:31 658

原创 线性表的查找算法

的顺序表上(假设是升序),判断要查找的值和中间值大小关系,如果要找的值大于中间值,就说明要找的值如果存在那么必然在中间值的右边,反之亦然,随后再拿查找值和中间值右边数据的中间值比较,直到找完或者找到,该算法的时间复杂度是O(logn)。索引就是将一个关键字与它对应的记录相关联的过程,所谓线性索引就是将索引项集合组织为线性结构,也称为索引表。根据要查找的关键值key与查找表中最大最小记录的关键字比较后的查找方法。分块索引:将n个数据元素“按块有序”划分为m块(m<=n)。最基本的查找方法,从头到尾一一比对。

2025-07-09 15:07:12 363

原创 哈夫曼树的构建及其编码

3)删除这两棵树,在森林中增添新树(我使用bool isson来标记树是否被删除)1)先创建全是根的森林(n个根)(即每个根节点的左右子树都为空)4)重复2)和3)直至剩下一棵树(即循环n-1次)2)在所有树选用两个权值最小的树造一棵新树。4、重复2、3剩单根。带权路径长度之和最小的二叉树。

2025-06-23 16:16:36 417

原创 二叉树的创建及其遍历

使用递归的思想,先创建头结点,然后再调用创建二叉树的函数创建左右子树。

2025-06-22 17:38:19 314

原创 拓扑排序算法和关键路径算法

拓扑排序是对有向无环图 (DAG) 的顶点进行排序的算法,使得对于每一条有向边 (u,v),顶点 u 在排序中都出现在顶点 v 之前。(Activity On Vertex Network):表示工程的有向图中用顶点表示活动,用弧表示活动之间的优先顺序的网。:如果网的顶点全部被输出则说明不存在回路,否则存在回路。

2025-06-17 16:41:12 328

原创 最短路径(包含迪杰斯特拉算法和弗洛伊德算法)

1、迪杰斯特拉(Dijkstra)算法:Dijkstra 算法是一种用于计算输入输出如下:2、Floyd(弗洛伊德)算法:Floyd 算法是一种用于计算的经典图论算法arc0x7FFFFFFFdistancepathpath[i][j]iji(j, k)i 缩短路径我把我对该算法的一些理解在以下代码中进行了注释。

2025-06-15 22:08:51 298

原创 最小生成树(Prim算法和Kruskal算法)

2、Prim算法:构造最小生成树的一种算法,普里姆算法的基本思想是从一个起始顶点开始,逐步扩展生成树,直到包含所有顶点。算法的核心是通过parent数组将不连通的图转化为不同的树,通过检查根节点是否相同从而实现连通性检查。3. 在生成树与非生成树的边中选择权值最小的边,将其加入生成树中。2依次选择权重最小的边,如果该边不会与已选择的边形成环路,则加入最小生成树。1、生成树:没有回路的图,即一个有n个顶点的生成树只有n-1条通路。最小生成树:构造连通网的最小代价生成树。1. 初始化一个空的生成树。

2025-06-13 20:45:02 137

原创 图的深度优先遍历和广度优先遍历

1、深度优先遍历:简称DFS,从图的某个结点V出发,访问此顶点,然后从V未被访问的邻接点出发深度优先遍历图,直到图中所有与V有路径相通的顶点都被访问到。2、广度优先遍历:简称BFS,类似于树的层次遍历,即一步步扩大搜索范围,这里可以通过建立一个堆来实现,弹出一个顶点的同时压入其所有相邻而未被访问的顶点。

2025-06-12 15:39:26 109

原创 图的存储结构

1、邻接矩阵:用两个数组来表示图,一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中边或弧的信息。2、邻接表:数组与链表结合的存储方法。eg:下图为无向图的邻接表结构。

2025-06-10 21:32:08 139

空空如也

空空如也

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

TA关注的人

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