![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++ 算法竞赛 常用数据结构
C++ 算法竞赛 常用数据结构
古葬
生产学术垃圾中…
展开
-
【数据结构】图
我们可以将看作是一种从拓展而来的 数据结构,相较于和的自由度更高,从而更为复杂。原创 2023-10-26 09:37:37 · 47 阅读 · 0 评论 -
【数据结构】堆
给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见后续的堆排序章节。:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 𝑂(log 𝑛) ,而建队操作为 𝑂(𝑛) ,这些操作都非常高效。:这是一个经典的算法问题,同时也是一种典型应用,例如选择热度前 10 的新闻 作为微博热搜,选取销量前 10 的商品等。对于大顶堆(小顶堆),堆顶元素的值分别是最大(最小)的。主要可分为以下两种类型。原创 2023-10-24 18:31:15 · 35 阅读 · 0 评论 -
【数据结构】二叉树
分别指向「左子节点」和「右子节点」,该节点被称为这两个子节点的「父节点」。当给定一个二叉树的节点时,我们将该节点的左子节点及其以下节点形成的树称为该节点的「左子树」,同理可得「右子树」。是一种非线性数据结构,代表着祖先与后代之间的派生关系,体现着“一分为二”的分治逻辑。来创建多个二叉树节点。原创 2023-10-17 19:51:53 · 48 阅读 · 0 评论 -
【数据结构】双向队列
唯一的不同在于它多了。提供了更高的灵活 性,原创 2023-10-12 23:32:20 · 68 阅读 · 0 评论 -
【数据结构】栈与队列
如图所示,我们把堆叠元素的顶部称为。将把元素添加到栈顶的操作叫做。如图所示,我们将队列的头部称为。,将把元素加入队尾的操作称为。, 删除队首元素的操作称为。,删除栈顶元素的操作叫做。的逻辑的线性数据结构。的逻辑的线性数据结构。原创 2023-10-12 00:10:25 · 40 阅读 · 0 评论 -
【数据结构】数组与链表
例 如,如果数组同时包含 int 和 long 两种类型,单个元素分别占用 4 bytes 和 8 bytes ,那么此 时就不能用以下公式计算偏移量了,因为数组中包含了两种长度的元素。,又称动态数组,是基于数组实现的一种数据结构。链表由结点组成,结点之间通过引用(指针)连接,各个结点可以存储不同类型的数据。链表的设计使得各个节点可以被分散存储在内存各处,它们的内存地址是无须连续的。名称是固定的,但是它们在不同的编程语言中由不同的单词来表示,如。所有数据结构都是由数组、链表或两者的组合实现的。原创 2023-10-10 20:33:58 · 65 阅读 · 1 评论 -
初识数据结构与算法
算法算法定义「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性问题是明确的,包含清晰的输入和输出定义。具有可行性,能够在有限步骤、时间和内存空间下完成。各步骤都有确定的含义,相同的输入和运行条件下,输出始终相同。数据结构数据结构定义「数据结构 data structure」是计算机中组织和存储数据的方式,具有以下设计目标空间占用尽量减少,节省计算机内存。数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。原创 2023-10-06 23:58:14 · 61 阅读 · 1 评论