![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 93
数据结构的理论知识,以及手撕代码,使用C/C++实现的数据结构
茉莉玫瑰花茶
天生我材必有用
展开
-
排序之选择排序
选择排序是一种简单直观的排序算法,其基本思想是在每一轮选择中找到未排序部分的最小(或最大)元素,然后将其与未排序部分的第一个元素交换位置。尽管选择排序不是最高效的排序算法,但它的优点是算法简单,且在数据量较小或部分数据已经有序的情况下,性能表现尚可。因此,如果预计数据集的大小较小,或者在排序前可以快速判断数据集的大小,选择排序可能是一个不错的选择。:在找到最小元素后,如果它不在当前位置,可以一次性将所有元素移动到它们最终的位置,而不是仅仅交换最小元素。:在未排序的数组部分,找到最小元素的索引。原创 2024-08-19 13:32:57 · 279 阅读 · 0 评论 -
排序之冒泡排序
冒泡排序原创 2024-02-24 14:16:51 · 849 阅读 · 0 评论 -
排序之插入排序
插入排序是一种简单的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。:如果第二张牌的数字比第一张牌小,你就继续拿出第三张牌,将它与第一张牌比较。如果第三张牌的数字也比第二张牌小,你就将它放在第一张牌的前面,然后继续比较第二张和第三张牌。:然后你拿出第二张牌,将它与第一张牌比较。如果第二张牌的数字比第一张牌大,你就将它放在第一张牌的后面,这样你就有两张牌的有序序列了。:你继续拿出剩下的牌,重复上述步骤,直到所有的牌都被比较过并插入到正确的位置。原创 2024-08-19 12:44:56 · 403 阅读 · 0 评论 -
二叉树遍历(C++版本)
访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,也是二叉树上进行其它运算的基础。前·中·后序遍历:前序遍历亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。中序遍历访问根结点的操作发生在遍历其左右子树之中(间)。后序遍历访问根结点的操作发生在遍历其左右子树之后。由于被访问的结点必是某子树的根,。NLRLNR和LRN分别又称为先根遍历、中根遍历和后根遍历。相应地,前序、中序和后序遍历都属于。原创 2024-08-18 14:45:23 · 939 阅读 · 0 评论 -
TOP-K
我们可以使用一个额外的数据结构(例如哈希表)来记录每个元素出现的次数,这样即使元素值相同,我们也能知道它们是否是不同的实例。遍历数组中的每个元素,如果堆的大小小于K,就将元素推入堆中;如果堆的大小等于K,并且当前元素大于堆顶元素,则弹出堆顶元素,并将当前元素推入堆中。此外,这个实现的时间复杂度是O(n log K),其中n是数组中元素的数量。注意,这种方法的时间复杂度仍然是O(n log k),但是它能够正确处理重复元素的情况。中,并逆序打印这些元素,因为最小堆的顶部是最小的元素,而我们需要最大的元素。原创 2024-08-17 14:53:48 · 709 阅读 · 0 评论 -
排序之堆排序
堆排序是一种基于比较的排序算法,它使用二叉堆数据结构来实现。二叉堆是一种特殊的完全二叉树,它满足以下两个性质:结构性:完全二叉树,即除了最后一层外,其他各层的节点数都达到最大,并且最后一层的节点尽可能地集中在左侧。堆属性:可以是最大堆或最小堆。在最大堆中,父节点的值总是大于或等于其子节点的值;在最小堆中,父节点的值总是小于或等于其子节点的值。原创 2024-08-17 12:29:40 · 237 阅读 · 0 评论 -
链表(linked_list)的理解以及实现
链表是一种线性数据结构,其中的每个元素都是一个节点对象,各个节点通过“引用”相连接。引用记录了下一个节点的内存地址,通过它可以从当前节点访问到下一个节点。可以看出:链表物理结构不是连续的。原创 2024-08-15 20:05:35 · 979 阅读 · 0 评论 -
标准库中的string
字符串容量头文件:;原创 2024-07-31 18:32:03 · 1012 阅读 · 0 评论 -
string的底层简单实现(造轮子)
String的底层的简单实现原创 2024-08-02 18:39:03 · 746 阅读 · 0 评论 -
STL中的vector以及简单实现
C++中STL库中vector模板的理解使用,以及底层实现原创 2024-08-05 17:04:25 · 552 阅读 · 0 评论 -
STL中的list以及简单实现
说到迭代器遍历的话,与string,vector都一样;原创 2024-08-07 14:30:09 · 925 阅读 · 0 评论 -
STL中的栈(stack)和队列(queue)以及简单(复用)实现
deque(双端队列:是一种双开口的连续空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。原创 2024-08-14 12:58:35 · 856 阅读 · 0 评论 -
顺序表(SeqList)的理解以及实现
SeqList的底层实现(C++),通讯录的实现:模板的好处原创 2024-08-15 14:35:42 · 940 阅读 · 0 评论