算法導論-排序和順序統計量-堆排序(缺代碼)

堆排序

(二叉)堆是一個數組,它可以被看成一個近似的完全二叉樹。樹上的每一個結點對應數組中的一個元素。除了最底層外,該樹是完全充滿的,而且是從左像右填充。

在堆排序中,我們使用的是最大堆。最小堆通常用于構造優先隊列。

在最大堆中,最大堆性質是指除了根以外的所有結點i都要滿足:A[Panrent(i)]≥a[i],也就是說,某個結點的值至多與其父結點一樣大。堆中的最大元素存放在根結點中。

把堆看成一棵樹,一個堆中的結點的高度就為該結點到葉結點最長簡單路徑上邊的數目。

優先隊列是一種用來維護一組元素構成的集合S的數據結構,其中的每一個元素都有一個相關的值,稱為關鍵字(key)。一個最大優先隊列支持以下操作:
Insert(S,x):把元素x插入集合S中。這一操作等價于S=S∪{x}。
Maximum(S):返回S中具有最大鍵字的元素。
Extract-Max(S):去掉并返回S中的具有最大鍵字的元素。
Increase-Key(S,x,k):將元素x的關鍵字值增加到k,k的值不小于x的原關鍵字。

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

推薦閱讀更多精彩內容

  • 0.目錄 1.優先隊列ADT 2.幾種實現 3.二叉堆 4.d-堆 5.左式堆 6.斜堆 7.二項隊列 8.斐波那...
    王偵閱讀 3,192評論 1 2
  • 課程介紹 先修課:概率統計,程序設計實習,集合論與圖論 后續課:算法分析與設計,編譯原理,操作系統,數據庫概論,人...
    ShellyWhen閱讀 2,362評論 0 3
  • 本文涉及更多的是概念,代碼部分請參考之前寫過的 2 篇博客 基于Javascript的排序算法基本數據結構和查找算...
    faremax閱讀 1,318評論 0 2
  • 概述:排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,747評論 0 15
  • 人生最愜意 141的后座 打開窗 環陵路的風 閉上眼睛 拂面而來
    小暖之旅閱讀 188評論 0 0