i-1)/2 - 左儿子为 2(i+1) - 1 - 右儿子为 2(i+1) 这样对于任意索引的节点, 我们都可以很好的利用以上规律定位其父节点, 以及左, 右儿子, 完成想要的操作....根据当前元素的大小, 逐步执行shift-up操作, 直到找到一个合适的位置(满足min-heap约束) 举例来说:
对于上图这样一个已有的min-heap, 当我们插入一个新的值为0的节点时...然后执行shift-down操作, 直到找到合适的位置
接上面的例子, 我们删除0号节点, 则有如下的情况 :
最后形成的小根堆为:
图画的比较简单, 大家纸上画一下整体过程效果更佳.
1.2...的情况 , 直接不创建heap_entry, 仅将heap_index_设置为最大的size_t 2....使用up_heap()调整heap_entry到合适的位置 4. timer链表的处理 5.