![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构、算法与应用(C++)
文章平均质量分 91
右边是我女神
笔记仓库
展开
-
图论的基础
文章目录基本概念特性图的术语:顶点、边、邻接、关联、度、回路、路径、连通构建、生成树。图的类型:无向图、有向图和加权图。图的常用描述方式:邻接矩阵、矩阵邻接表和邻接链表。图的标准搜索方法:广度优先搜索和深度优先搜索。基本概念图是一个用线或边连接在一起的顶点或节点的集合。G=<V,E>G=<V,E>G=<V,E>,其中V的元素称为顶点/节点/点,E的元素称为边/弧/线。带方向的边称为有向边,反之称为无向边。对于无向边,当且仅当(i,j)(i,j)(i,j)原创 2022-04-08 19:58:33 · 970 阅读 · 0 评论 -
洛谷——栈
文章目录P1981 表达式求值P1165 日志分析P1981 表达式求值#include <iostream>#include <stack>#include <string>using namespace std;stack<int> s;int str2int(string snum){ int inum=0; for(auto &n:snum) inum = inum*10 + n - '0';原创 2022-03-20 22:52:23 · 608 阅读 · 0 评论 -
平衡搜索树
文章目录概述AVL树AVL搜索树的特性AVL树的描述AVL搜索树的插入AVL搜索树的删除概述对于有序的一些数据结构,我们进行了汇总:方法搜索(w)插入(w)删除(w)搜索(a)插入(a)删除(a)有序数组O(logn)O(\log n)O(logn)O(n)O(n)O(n)O(n)O(n)O(n)O(logn)O(\log n)O(logn)O(n)O(n)O(n)O(n)O(n)O(n)有序链表O(n)O(n)O(n)O(n)O( n)O(n)原创 2022-03-17 19:21:08 · 699 阅读 · 0 评论 -
洛谷_线性表
文章目录P3613 寄包柜P1446P3613 寄包柜#include <iostream>#include <map>using namespace std;//using boxes = map<int,map<int,int>>;int main(int argc, const char * argv[]) { int n,q; cin >> n >> q; map<int,int>原创 2022-03-16 21:31:08 · 798 阅读 · 0 评论 -
二叉搜索树
文章目录概述定义二叉搜索树索引二叉搜索树二叉搜索树的操作和实现抽象数据类型类binarySearchTree概述二叉搜索树的渐进性能可以和跳表相媲美:查找、删除、插入操作所需要的平均时间为Θ(logn)\Theta(\log n)Θ(logn)。最坏情况下,所需要的时间为Θ(n)\Theta(n)Θ(n)。定义二叉搜索树我们用散列表来描述字典,如果我们给dictionary增加以下操作,那么散列不再有较好的平均性能:按关键字的升序输出字典元素;按升序找到第k个元素;删除第k个元素。为原创 2022-03-15 20:40:53 · 1028 阅读 · 0 评论 -
竞赛树及其应用
文章目录赢者树赢者树的实现赢者树的初始化重新组织比赛性能分析代码输者树赢者树定义-1 有n个选手的一棵赢者树是一棵完全二叉树,它有n个外部节点和n-1个内部节点,每个内部节点记录的是在该节点比赛的赢者。赢者树可分为最小赢者树和最大赢者树。赢者树的一个优点在于,当一名选手的分数改变时,修改竞赛树比较容易。只要在该节点到根的路径上重赛即可。赢者树的重构需要耗时O(logn)O(\log n)O(logn);n个选手的赢者树可以在Θ(n)\Theta(n)Θ(n)时间内初始化,沿着从叶子到根的方向原创 2022-03-14 14:07:05 · 1078 阅读 · 0 评论 -
优先级队列
文章目录概述概述优先级队列中,元素出队列的顺序由元素的优先级决定。可以按优先级的递增顺序,也可以按优先级的递减顺序,但不是元素进入队列的顺序。堆是实现优先级队列效率很高的数据结构。堆是一棵完全二叉树。...原创 2022-03-13 22:49:24 · 1521 阅读 · 0 评论 -
散列表描述
上表展示了有序数组、有序链表、跳表和哈希表的渐近性能。需要说明的是,有序数组支持时间复杂度为O(1)的访问,所以可以使用二分查找,让查找速度达到O(logn)。因为链表需要有序,所以在插入或删除时都要进行查找的操作,自然而然,它的时间复杂度变为了O(n)。字典python中的dict,STL中的map。另外还提供了multimap,支持相同的关键词,被称为多重字典。插入insert、删除erase,会自动按照字典序排列好。另外还有专属map的下标操作。find、count、lower_bou.原创 2022-03-01 23:04:56 · 182 阅读 · 0 评论 -
栈(Stack)和队列(Queue)
文章目录栈应用括号匹配汉诺塔列车车厢重排离线等价类问题布线问题栈栈和队列可以视为数组和链表的限制版本。应用括号匹配问题描述:对一个字符串的左右括号进行匹配。解题思路:遇到左括号,入栈。遇到右括号,出栈,若没元素,显然是不匹配的。字符串遍历后,如果栈里面还有元素,那么也是不匹配的。#include <stack>#include <string>#include <vector>#include <iostream>using namesp原创 2022-02-28 22:24:05 · 357 阅读 · 0 评论 -
线性表(数组与链表)
文章目录数据对象和数据结构数组描述链式描述单向链表应用数据对象和数据结构数据对象是一组实例或值,比如布尔值、整型、自然数。数据对象的一个实例要么是不可再分的原子,要么是另一个数据对象,称呼为元素。数据结构是一个数据对象,同时这个对象的实例以及构成实例的元素都存在着联系,而且这个联系由函数来规定。数组描述STL提供了一个基于数组的类vector。数组的长度是按需要动态增加的,如果实施插入操作时vector已满,那么vector的容量将按照原容量的50%~100%增加。数据结构最常见的四种操作,分原创 2022-02-15 13:39:49 · 263 阅读 · 0 评论 -
渐近记法(补充理解)
文章目录渐近记法大O记法渐近记法ΩandΘ\Omega and \ThetaΩandΘ说明渐近记法渐近分析方法主要确定的是复杂函数的最大项,但不包括最大项的系数。令p(n)p(n)p(n)和q(n)q(n)q(n)是两个非负函数。称p(n)p(n)p(n)渐近地大于q(n),当且仅当limn→infq(n)p(n)=0\lim_{n\to \inf}\frac{q(n)}{p(n)}=0limn→infp(n)q(n)=0。渐近记法描述的是最大实例特征的时间或空间复杂度。时间复杂度和步数在渐原创 2022-02-12 13:10:16 · 336 阅读 · 0 评论 -
C++回顾与程序性能分析
文章目录C++回顾函数与参数模板函数异常动态存储空间分配操作符new操作符deleteC++回顾函数与参数模板函数template<class T>T abc(T a, T b, T c) return a + b + c;函数的签名:形参类型及形参个数所确定,如(int,int)。异常try{code}catch(...){code}try中的代码块抛出异常,进入第一个能捕捉到这种异常类型的catch块,同时其余的catch块被忽略。动态存储空间分配操作符new原创 2022-02-11 00:36:33 · 811 阅读 · 0 评论