Procházet zdrojové kódy

更新 '_posts/go-5.md'

aaronwei před 5 roky
rodič
revize
5ef4ca78c0
1 změnil soubory, kde provedl 15 přidání a 0 odebrání
  1. 15 0
      _posts/go-5.md

+ 15 - 0
_posts/go-5.md

@@ -351,31 +351,46 @@ array此时为[5, 4, 6, 7, 9, 3, 4, 8, 2, 0]
 
 
 调用siftDown(array, 4 , 10 )
+
 交换后结果 [5 4 6 7 9 3 4 8 2 0] 继续循环
+
 rootIndex: 9 没有子节点退出循环
 
 
 调用siftDown(array, 3 , 10 )
+
 交换后结果 [5 4 6 8 9 3 4 7 2 0] 继续循环
+
 rootIndex: 7 没有子节点退出循环
 
 
 调用siftDown(array, 2 , 10 )
+
 child兄弟节点更大,选择该兄弟节点childIndex: 6
+
 父节点比子节点大退出循环
 
 
+
 调用siftDown(array, 1 , 10 )
+
 child兄弟节点更大,选择该兄弟节点childIndex: 4
+
 交换后结果 [5 9 6 8 4 3 4 7 2 0] 继续循环
+
 父节点比子节点大退出循环
 
 
 调用siftDown(array, 0 , 10 )
+
 交换后结果 [9 5 6 8 4 3 4 7 2 0] 继续循环
+
 交换后结果 [9 8 6 5 4 3 4 7 2 0] 继续循环
+
 交换后结果 [9 8 6 7 4 3 4 5 2 0] 继续循环
+
 rootIndex: 7 没有子节点退出循环
+
 最后获取得的 [9 8 6 7 4 3 4 5 2 0] 就是大顶堆,父节点皆比子节点大。
 
 排序我就不举例了,都是一个意思。如果还看不懂就把切片换成堆结构你就明白了。