数据结构学习
文章平均质量分 82
KevinJune
在读双控研究生
展开
-
前缀树和贪心算法
何为前缀树?又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。如何生成前缀树?pass:加前缀树时经过该节点的次数end:这个节点为多少个字符串的终结的点 代码: 例子:一个字符串类型的数组arr1,另一个字符串类型的数组arr2。arr2中有哪些字符,是arr1中出现的?请打印。arr2原创 2022-07-12 21:31:47 · 228 阅读 · 0 评论 -
图基础知识以及例题
(1)邻接表邻接表,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。 (2)邻接矩阵逻辑结构分为两部分:V和E集合,其中,V是顶点,E是边。因此,用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据。 (3)在实际解题的时候图有各种各样的表达形式。可以将其先转化成自己常用的一种模板,再用自己熟悉的算法去完成。 假设给一个图的类型的结构,将其转化成自己的模板 (1)利用队列实现(2)从源节点开始依次按照宽度进队列,然后弹出(3)每弹出一个点,把原创 2022-07-06 17:39:46 · 272 阅读 · 0 评论 -
二叉树基本知识和例题
class Node{ V value; Node left; Node right;}用递归和非递归两种方式实现二叉树的先序、中序、后序遍历如何直观的打印一棵二叉树如何完成二叉树的宽度优先遍历(常见题目:求一棵二叉树的宽度) 分析:会多次返回到原函数,虽然什么都没做,每个节点都会被使用3次 均由递归序加工到来,选择打印的时间不同。先序即打印输出为(头左右):1,2,4,5,3,6,7 (第一次进入函数时打印,其余两次不打印)中序即打印输出为(左头右):4...原创 2022-07-03 23:02:35 · 355 阅读 · 0 评论 -
链表的常见数据结构及题目
目录1 哈希表的简单介绍2 有序表的简单介绍3 链表的节点结构4 面试时链表解题的方法论5 判断一个链表是否为回文结构6 将单向链表按某值划分成左边小、中间相等、右边大的形式7 复制含有随机指针节点的链表8 两个单链表相交的一系列问题1. 哈希表在使用层面上可以理解为一种集合结构2. 如果只有key,没有伴随数据value,可以使用HashSet结构(C++中叫UnOrderedSet)3. 如果既有key,又没有伴随数据value,可以使用HashMap结构(C++中叫UnOrderedMap)4. 有无原创 2022-06-24 23:04:49 · 270 阅读 · 0 评论 -
桶排序及排序算法总结
1. 比较器的实质就是重载比较运算符2. 比较器可以很好的应用在特殊标准的排序上3. 比较器可以很好的应用在根据特殊标准排序的结构上4. 堆结构的heapInsert与heapify操作5. 堆结构的增大和减少6. 优先级队列结构,介绍堆结构1. 计数排序2. 基数排序分析:1. 桶排序思想下的排序都是不基于比较的排序2. 时间复杂度为O(N), 额外空间负载度O(M)3. 应用范围有限,需要样本的数据状况满足桶的划分...原创 2022-06-24 17:16:36 · 97 阅读 · 0 评论 -
二叉树结构以及堆结构基础
二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树 。1、满二叉树:如果一棵二叉树只有度为0的节点和度为2的节点,并且度为0的节点在同一层上,则这棵二叉树为满二叉树[4] 。2、完全二叉树:深度为k,有n个节点的二叉树当且仅当其每一个节点都与深度为k的满二叉树中编号从1到n的节点一一对应时,称为完全二叉树 [4]原创 2022-06-24 10:53:17 · 205 阅读 · 0 评论 -
认识O(NlogN)的排序
1. 整体就是一个简单递归,左边排好序、右边排好序、让其整体有序2. 让其整体有序的过程里用了排外序方法(左右两个对比,将数值较小的放进外部的一个数组内,然后被调用的数据指针往下移一位,相等时默认取左边的数据,如果一侧的数组数据被提取完成,将剩下的数据全部保存到外部数组即可)3. 利用master公式来求解时间复杂度4. 归并排序的实质时间复杂度O(N*logN), 额外空间复杂度O(N)小和问题和逆序对问题在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。例子:[1,原创 2022-06-23 11:07:22 · 135 阅读 · 0 评论 -
认识时间复杂度和简单排序算法
目录1 认识时间复杂度1.1 常数时间的操作1.2 异或运算的性质与扩展1.3 对数器的概念和使用1.4 剖析递归行为和递归行为时间复杂度的估算2 常用排序算法2.1 遍历排序2.2 冒泡排序2.3 插入排序一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作时间复杂度为一个算法流程中,常数操作数量的一个指标。常用O(读作big O)来表示。在表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果为f(N),那么时间复杂度为O(f(N))。评价一个算法流程的好坏,先看原创 2022-06-22 21:47:47 · 258 阅读 · 0 评论