- 博客(16)
- 收藏
- 关注
原创 排序算法小结
枢轴是用于划分数组的元素,它将数组分为两部分:一部分是小于或等于枢轴的元素,另一部分是大于枢轴的元素。第一次划分后得到的序列中只有一个枢轴,因此可将当前序列和最终排号序的序列进行比较。算法:使用快速排序算法对数据进行升序排序,若经过一次划分后得到的数据序列是:68、11、70、23、80、77、48、81、93、88,则该次划分的枢轴是是什么?可以看出枢轴可能是77或81。而77左边有比它大的80,81经过检验符合条件。应该是O(logN)。
2025-05-28 01:15:41
339
原创 二叉查找树
构建一棵二叉查找树的过程就是逐渐插入结点的过程。新插入的结点一定是一个新添加的叶结点,并且是查找不成功时查找路径上访问的最后一个结点的左子节点或右子节点。(其实这里我觉得就是把问题转化成了之前的查找)否则:若key值小于根结点的关键字值,在根结点的左子树上继续查找,转向步骤①;若key值大于根结点的关键字值,在根结点的右子树上继续查找,转向步骤①。②若二叉查找树非空,比较key值与根结点关键字值的大小,若相等则查找成功。①若二叉查找树为空二叉树,则查找失败。这个就要分情况讨论。
2025-05-26 00:21:58
253
原创 Dijkstra算法解决加权图的单源最短路问题
问题:给定加权图G和源点s,对于所有其他顶点v,s到v的最短路径有多长?该路径由哪些边组成?最短路径的重要性质:最短路径的子路径也是最短路径。
2025-05-15 20:32:17
203
原创 计算连续子序列最大和
本人比较笨,前几天考试考了这个计算连续子序列最大和问题,硬是没写出来。现在十分恼火,所以我现在整理下计算连续子序列最大和的常见方法。
2025-05-14 00:13:44
265
原创 线性表的题目集
线性表:由同一类型的数据元素构成的有序序列的线性结构。线性表的基本操作包括:初始化、添加、遍历、插入、删除、查找、释放等。线性表的结构:顺序存储结构(数组)和链式存储结构(链表)。
2025-05-13 16:51:03
201
原创 图的遍历小小总结
先回顾下图的定义。图(Graph)是由顶点的有穷非空集合V(G)和顶点之间边的集合E (G)组成,通常表示为: G=(V,E),其中,V是图G中顶点的集合,E是图G中边的集合。图的定义中有结点和边。如果通过结点来遍历,完全没用利用边的信息,不能反映数据间的关系。借助边信息实现遍历的方法有两种:深度优先遍历和广度优先遍历。相比于树的遍历,图的遍历主要有以下几点不同:1.结点地位相同,没有特殊的结点。2.可能存在回路。对于1,选择起点就成了问题。对于2,则需要判断结点是否已经访问。
2025-05-09 08:20:04
119
原创 最大公因数的几种求法总结
终态:1∼n的升序排列,i在i的位置上,i的下标是i(或者也可以说,a[i]在a[i]的位置上,a[i]的下标是a[i])。而规定只能选择距离为k的两数交换,所以|a[i]-i|一定是k的倍数,k一定是|a[i]-i|的因数。即k一定是|a[1]-1|,|a[2]-2|,|a[3]-3|,...,|a[n]-n|的因数。移动:元素a[i]要从初始位置i被移到最终的位置a[i]上,需要移动|a[i]-i|个位置。初态:1∼n的一个排列,a[i]在i的位置上,a[i]的下标是i。然后就是经典的欧几里得算法。
2025-05-08 21:30:35
357
原创 哈夫曼算法
什么是哈夫曼算法?简单回顾一下,哈夫曼算法是一种自下而上构建最优二叉树的方法,通过不断合并两个带权二叉树,最终生成最优二叉树。最优二叉树具有最小的WPL(哈夫曼树的带权路径长度)。
2025-04-05 23:13:16
194
原创 根据后序序列和中序序列确定二叉树
首先想,后序序列和中序序列分别可以确定什么?换句话说,我们可以得到当前根结点的左子树的后序序列和中序序列以及右子树的后序序列和中序序列。不断递归下去,将左子树再分成左子树的左子树和左子树的右子树......下面给出代码示例。
2025-04-05 22:31:57
319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人