数据结构
文章平均质量分 81
代码探秘者
努力学习编程,分享学习过程,希望大佬多多帮助,谢谢!
展开
-
【数据结构】(6.1)堆的基础知识(C语言)
堆(Heap):一种完全二叉树,其每个节点都比其子节点的数值大或等于(小或等于)小根堆:每个节点都比其子节点小或等于,根节点最小大根堆:每个节点都比其子节点大或等于,根节点最大系统堆:是用来划分系统内存区域的,与数据结构中的堆不同堆一般使用顺序结构存储//数据域int size;//有效元素个数//堆的容量} Heap;原创 2024-07-05 23:05:34 · 718 阅读 · 1 评论 -
【数据结构】(6.3)堆的应用——堆排序(C语言)
堆排序(Heap Sort)就是对直接选择排序的一种改进。此话怎讲呢?直接选择排序在待排序的n个数中进行n-1次比较选出最大或者最小的,但是在选出最大或者最小的数后,并没有对原来的序列进行改变,这使得下一次选数时还需要对全部数据进行比较,效率大大降低。堆排序算法是Floyd和Williams在1964年共同发明的,同时他们发明了“堆”这种数据结构。原创 2024-07-05 23:03:08 · 448 阅读 · 0 评论 -
【数据结构】(6.2)堆的应用——Top-K问题(C语言)
2、用剩余的 N-K 个元素依次与堆顶元素来比较,不满足则替换堆顶元素。将剩余 N-K 个元素依次与堆顶元素比完之后,堆中剩余的 K 个元素就是所求的前 K 个最小或者最大的元素。TopK 问题 (在一堆数据里面找到前 K 个最大 / 最小的数)。这么做**空间复杂度太高,**不建议用这种方法。这种思路可以做,但是假设我有1000000个元素,但是可以发现这样时间复杂度太高,不可取。,那么弹出的三个元素就是前最小的三个元素。1、用数据集合中前 K 个元素来建堆。的元素,那么就要用到大小为。原创 2024-07-05 22:49:47 · 466 阅读 · 0 评论