演算法導論 學習筆記 第六章 堆排序

2021-08-04 20:44:52 字數 620 閱讀 9373

這一章主要講了兩個點:1.堆排序。2.堆排序的應用(優先順序佇列)

堆是一種完全二叉樹(不理解)。反正是一種樹狀的資料結構了吧。有幾種操作。

求左子節點(2i),求右子節點(2i+1),求父節點(i/2)下取整。

保持最大堆結構(max-heapfiy)

建堆(building a heap)

然後這些屬性就可以實現堆排序了

書上的偉大碼比較容易看懂,然後自己再畫一畫就可以理解了。

這個就是堆排序的一種用法吧。

就像是如果有一堆的任務。就給每乙個任務乙個優先順序(關鍵字)。你可以用關鍵字很容易找出你想找的任務。

有一下幾種操作:

heap-maximum(a) 返回最大值

heap-extract-max(a) 返回最大值並刪除

heap-increase-key(a,i,key) 將i的關鍵字值程式設計key

heap-insert(a,key) 將key插入

這裡有些心得:一開始的時候覺得偽**比較難懂。還不如源**咧。但是現在我不這麼覺得了。。

偽**真是好東西,越看越喜歡。我要學一學怎麼在部落格上寫偽**了。

演算法導論學習筆記 第六章 堆排序

第六章 堆排序總結 這章主要講了堆 建堆 堆排序 優先順序佇列等。1.堆 堆可以被視為一顆完全二叉樹,底層用陣列實現。length a 陣列中的元素個數 heap size a 存放在a 中的堆的元素個數 樹的根a 1 給定某個結點的下標i 父節點parent i i 2 左節點left i 2i ...

《演算法導論》第六章 堆排序 筆記

堆排序不同於歸併排序的是,堆排序具有和插入排序一樣的空間原址性,任何時候都只需要常數個額外的元素空間儲存臨時資料。因此,堆排序是集合了插入排序和歸併排序兩種演算法優點的排序方法。二叉 堆是乙個陣列,它可以被看成乙個近似的完全二叉樹。樹上的每乙個結點對應陣列中的乙個元素,除了最底層,該樹是完全充滿的,...

演算法導論 第六章《堆排序》

本章開始介紹了堆的基本概念,然後引入最大堆和最小堆的概念。全章採用最大堆來介紹堆的操作,兩個重要的操作是調整最大堆和建立最大堆,接著著兩個操作引進了堆排序,最後介紹了採用堆實現優先順序佇列。二叉 堆資料結構是一種陣列物件,它可以被視為一棵完全二叉樹。除了最底層外,該樹是完全充滿的,而且是從左到右填充...