1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| """ [7,6,5,4,3,2,1] 0,1,2,3,4,5,6 [1,2,3,4,5,6,7] 1 2 3 4 5 6 7
----------------------------------- 优先队列:
优先队列由堆建成(小根堆) 有插入,弹出,上滤,下滤等操作; 插入以及弹出均为 (logn) 上滤以及下滤同样为 (logn) -----------------------------------
----------------------------------- 插入:
1. item从堆的顶部进入,然后使用下滤操作
2. item从堆的底部进入,然后使用上滤操作 -----------------------------------
----------------------------------- 弹出:
1. 小根堆从堆顶部弹出最小元素
2. 大根堆从堆顶部弹出最大元素
将底部元素移动到堆顶,然后下滤 -----------------------------------
----------------------------------- 上滤:
1. 大根堆 1. 比父节点大 -> 交换位置 2. 比父节点小 -> 不交换位置
2. 小根堆 1. 比父节点大 -> 不交换位置 2. 比父节点小 -> 交换位置 -----------------------------------
----------------------------------- 下滤:
1. 大根堆 · 取孩子树下标对应值最大的下标 1. 比孩子树大 -> 不交换位置 2. 比孩子树小 -> 交换位置
2. 小根堆 · 取孩子树下标对应值最大的下标 1. 比孩子树大 -> 交换位置 2. 比孩子树小 -> 不交换位置
----------------------------------- """
|