首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏方方的杂货铺

    asio 调度器实现 - timer 实现详解

    Core部分 - timer_queue的实现 asio的timer_queue实现与libevent一样, 使用了min-heap(小根堆)的实现. 1.1 min-heap 实现简述 首先, 因为 min-heap是一个完全二叉树, 所以我们可以直接使用数组来对其进行表示, 因为结构的特殊性, 我们很容易知道, 对于任意非0节点i: - 其父节点为(i-1)/2 - 左儿子为 2(i+1) - 1 另外min-heap的实现会保证根节点就是最小元, 用于定时器, 则是最近需要被执行的节点了, 利用这点, 我们能够很快的找出已经超时的节点进行后续的处理. 根据当前元素的大小, 逐步执行shift-up操作, 直到找到一个合适的位置(满足min-heap约束) 举例来说: 对于上图这样一个已有的min-heap, 当我们插入一个新的值为0的节点时 , 整个min-heap的调整过程是: 最后得到的min-heap如下: 删除节点(以根节点为例): 1.

    1.2K90编辑于 2023-05-23
  • 来自专栏福大大架构师每日一题

    2021-04-22:给定很多线段,每个线段都有两个数[start, end],表示线段开始位置和结束位置,左右都是闭区间,规定

    else { return b } } type Line struct { Start int End int } // An IntHeap is a min-heap

    42620发布于 2021-08-05
  • 来自专栏福大大架构师每日一题

    2021-04-22:给定很多线段,每个线段都有两个数[start, end],

    else { return b } } type Line struct { Start int End int } // An IntHeap is a min-heap

    45540发布于 2021-05-04
  • 来自专栏【腾讯云开发者】

    c++异步:asio的scheduler实现!

    (一)Core部分-timer_queue的实现 asio的timer_queue实现与libevent一样,使用了min-heap(小根堆)的实现。 min-heap实现简述 首先,因为min-heap是一个完全二叉树,所以我们可以直接使用数组来对其进行表示,因为结构的特殊性,我们很容易知道,对于任意非0节点i: 其父节点为(i-1)/2 左儿子为 另外min-heap的实现会保证根节点就是最小元,用于定时器,则是最近需要被执行的节点了,利用这点,我们能够很快的找出已经超时的节点进行后续的处理。 (满足min-heap约束) 举例来说: 对于上图这样一个已有的min-heap,当我们插入一个新的值为0的节点时,整个min-heap的调整过程是: 最后得到的min-heap如下: 删除节点( 这里也能体现出min-heap实现对定时器场合的适用性,操作和获取根节点的成本都比较低,这样就为我们在外围实现高效的timer scheduler提供了便利。

    2K11编辑于 2022-08-26
  • 来自专栏MiningAlgorithms

    Data Structures and Algorithms Basics(010):Heap

    的数对 6,合并k个有序列表 7,数据流中找中位数 8,投资k个项目,利润最大化 # 第二部分:相关练习题 # 1,第k大元素: import heapq # O(k+(n-k)lgk) time, min-heap heap) > k: heapq.heappop(heap) return heapq.heappop(heap) # O(k+(n-k)lgk) time, min-heap

    59820发布于 2019-08-08
  • 来自专栏iOSDevLog

    数据结构和算法

    image Min-HeapMin-heap是一个二叉树。它是完整的。存储在每个节点中的数据小于存储在其子节点中的数据项。 ? image Trie(前缀树或字典树): Trie是一棵树。

    2.8K40发布于 2018-12-07
  • 来自专栏Go学习

    LFU算法实现

    优先队列 (min-heap):用于快速找到计数器值最小的项。具体步骤如下:插入/更新缓存项:如果缓存项已存在,更新其计数器并调整优先队列中的位置。如果缓存项不存在,检查缓存是否已满。

    43510编辑于 2024-07-07
  • 来自专栏算法之美

    建堆时间复杂度是o(n)

    Q2: Find-max (or Find-min) → find a maximum item of a max-heap, or a minimum item of a min-heap, respectively

    2.8K20发布于 2021-06-25
  • 来自专栏yuyy.info技术专栏

    LeetCode:355_设计推特

    if user == nil { return } delete(user.follower, followeeId) } // An MinHeap295 is a min-heap

    87710编辑于 2023-05-01
  • 来自专栏后端云

    Golang标准库 container/heap

    . // Any type that implements it may be used as a // min-heap with the following invariants (established built using the heap interface. package main import ( "container/heap" "fmt" ) // An IntHeap is a min-heap

    59910编辑于 2023-02-10
  • 来自专栏编程技术专栏

    堆(Heap)的详细实现

    堆的介绍 Heap是一种数据结构具有以下的特点: 1)完全二叉树 2)heap中存储的值是偏序 Min-heap: 父节点的值小于或等于子节点的值 Max-heap: 父节点的值大于或等于子节点的值 [

    1.3K40发布于 2019-09-02
  • 来自专栏后端云

    client-go 源码分析(8) - workerqueue之延时队列DelayingQueue

    延迟队列的实现是,根据加入队列的时间,构造一个最小堆min-heap,然后到时间点后,将从最小堆pop一个元素加入queue中(因为最小堆是按照延时时间从小到大排序的)。

    65220编辑于 2023-02-10
  • 来自专栏一道题做一宿

    没有SortedList,如何快速找到中值

    } } return result; } private void rebalanceHeaps() { // max-heap最多比min-heap

    86320发布于 2020-08-24
  • 来自专栏技术分享

    【数据结构】排序算法系列——堆排序(附源码+图解)

    小顶堆(Min-Heap):对于每一个节点 i,都满足 A[i] ≤ A[2i + 1] 且 A[i] ≤ A[2i + 2](如果子节点存在)。即,父节点的值总是小于或等于其子节点的值。

    48410编辑于 2024-09-16
  • 来自专栏golang分享

    合适以及为何使用最少使用(LFU)缓存与Golang中的实现

    我们不是将min-heap视为可能支持LFU缓存的可能数据结构,而是考虑采用更好的方法。 如果我们重新阅读本文开头提到的论文,我们将看到虽然LFU不是新闻,但它传统上是使用min-heap实现的,它具有插入,查找和删除的对数时间。

    4.9K31编辑于 2023-07-30
  • 【数据结构】树和二叉树及堆的深入理解

    最小堆(Min-Heap):父节点的值总是小于等于其子节点的值,根节点为最小值。堆的性质:堆是完全二叉树。最大堆的每个父节点的值都大于等于其子节点的值。最小堆的每个父节点的值都小于等于其子节点的值。

    26510编辑于 2025-07-30
  • 来自专栏Go语言学习专栏

    字节一面,问得有点深!

    多路归并(Merge):同时打开这 N 个有序小文件,每个文件读第一个数放入最小堆(Min-Heap)。 输出:从堆顶拿出最小的数写入最终结果文件,然后从该数所属的小文件里再读下一个数进堆。

    13810编辑于 2026-03-17
  • 来自专栏福大大架构师每日一题

    文心一言 VS 讯飞星火 VS chatgpt (213)-- 算法导论16.1 4题

    a[i] } func (a ByEnd) Less(i, j int) bool { return a[i].end < a[j].end } // An IntHeap is a min-heap sort.Sort(ByEnd(activities)) // Initialize a min-heap to store the end times of currently occupied

    28420编辑于 2024-03-18
  • 来自专栏CSDN搜“看,未来”

    走进STL - heap,小树芽

    根据元素排列方式,heap可以分为max-heap和min-heap。STL供应的是max-heap,最大值在头结点。

    38720发布于 2020-08-26
  • 来自专栏灰子学技术

    Go之heap

    . // Any type that implements it may be used as a // min-heap with the following invariants (established

    97020发布于 2020-08-21
领券