堆的存儲一般都用數(shù)組來表示堆, 第i結點為子節(jié)點,則該i節(jié)點的父結點下標就為(i – 1) / 2。 第i節(jié)點為父節(jié)點時,它的左右子結點下標分別為2 * i + 1和2 * i + 2。 如第0個結點左右子結點下標分別為1和2。 大根堆排序的過程: 1. 首先,建立這個大根堆,大根堆使用數(shù)組表示的,所以父節(jié)點的個數(shù), 最多為array.size()/2,數(shù)組的個數(shù)除以2. 2. 先建立一個大根堆交換的函數(shù),head_ajust().該函數(shù)負責,父節(jié)點大于左右子節(jié)點。 3. 建立大根堆的時候,從父節(jié)點從size/2----到---0,以保證,每一個父節(jié)點的值,都大于左右子節(jié)點的值。 1.建立完之后,就是排序了。 ![]() ![]() |
|
來自: 雪柳花明 > 《C 筆試 算法題準備》