當我們將數字插入一個空的最大堆積(max-heap)時,我們需要確保在每次插入後堆積的屬性都得以維持。最大堆積的屬性是父節點的值必須大於或等於其子節點的值。下面我將詳細描述在插入給定數字串後,堆積如何一步步地成長和調整:
插入 5:
堆積:[5]
作為第一個元素,5直接成為根節點。
插入 8:
堆積:[8, 5]
8比根節點5大,所以8和5交換位置,8成為新的根節點。
插入 2:
堆積:[8, 5, 2]
2比8小,所以它保持在當前位置。
插入 3:
堆積:[8, 5, 2, 3]
3比8小,保持在當前位置。
插入 9:
堆積:[9, 5, 2, 3, 8]
9比8大,首先與8交換,然後再與8的父節點8交換,使得9成為新的根節點。
插入 4:
堆積:[9, 5, 2, 3, 8, 4]
4比9小,保持在當前位置。
插入 7:
堆積:[9, 5, 7, 3, 8, 4, 2]
7比其父節點2大,因此與2交換位置,但仍小於新的父節點7,因此保持在當前位置。
插入 10:
堆積:[10, 9, 7, 5, 8, 4, 2, 3]
10比9大,首先與9交換,成為新的根節點。
插入 1:
堆積:[10, 9, 7, 5, 8, 4, 2, 3, 1]
1比10小,保持在當前位置。
插入 6:
堆積:[10, 9, 7, 5, 8, 4, 2, 3, 1, 6]
6比其父節點1大,與1交換位置,然後比較其新父節點5,仍保持在當前位置。
這樣我們就完成了一個最大堆積的建立過程,每次插入都可能需要通過與父節點的比較並根據需要進行交換,以維持最大堆積的屬性。