堆排序

因為排序是log(n)級別
因此堆一定是一個樹形結構:二叉堆

這個二叉樹的特點:

  • 父親結點總是 > 子結點
image.png
  • 二叉堆必須是一個完全二叉樹。完全二叉樹指該二叉樹除了最后一層外,其他層的結點個數必須是最大值,且最后一層子節點必須全部集中在左側。
image.png

注意:這樣的堆稱為“最大堆”,因為最上面的根結點一定是最大的值。如果我們要構建最小堆,則只需要保證根節點總是小于子節點。

給二叉堆每個結點標上序列號

image.png

我們可以輕易得出

  • 每個結點的左子結點的序列號一定是該結點的兩倍
  • 每個結點的右子結點的序列號一定是該結點的兩倍 + 1

注意:不使用數組第0號位存儲

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 關于最大堆 什么是最大堆和最小堆?最大(小)堆是指在樹中,存在一個結點而且該結點有兒子結點,該結點的data域值都...
    凌云壯志幾多愁閱讀 88,284評論 33 71
  • 二叉樹 滿二叉樹 國內教程定義:一個二叉樹,如果每一個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,...
    簡_愛SimpleLove閱讀 4,296評論 0 3
  • 堆排序可以做什么 首先應該弄清楚堆排序可以解決什么問題,答案是顯而易見的:排序。說得通俗點兒就是對一組無序的數字進...
    Springlord888閱讀 30,399評論 11 52
  • 上次寫到了快排,接著往下講。O(nlogn)級別的算法除了上次說的快排,歸并,還有推排序。今天從先推排序開始寫。堆...
    鍋與盆閱讀 2,062評論 0 2
  • 與簡單選擇排序的關系 簡單選擇排序過程有這個問題:在待排序的n個記錄中選擇一個最小的記錄需要比較n-1次。這樣的操...
    官先生Y閱讀 539評論 0 1