演算法筆記 堆排序1 0

2021-07-14 13:33:45 字數 483 閱讀 5039

郭郭自學筆記(1):堆排序1.0

1.堆是什麼:堆其實就是乙個完全二叉樹

特點:2.堆特性的應用

對於給的一組資料,如上圖(16,14,10,8,7,9,3,2,4,1),從大到小排序。

如上圖,乙個大根堆,的根節點,明顯是一組資料的最大值。

3.堆排序**(c++,下次我絕對不寫這麼多話了,直接上**)

#include #include using namespace std;

#define max 1000

int elem[max];

int n;

//交換兩個元素

void swap(int i, int j)

//調整元素位置

void adjustheap(int i)

}//刪除元素

int deleteelem()

int main()

演算法筆記 堆排序

堆排序是一種原地的,時間複雜度為 o nlogn 的排序演算法。快速排序的時間複雜度也是 o nlogn 甚至堆排序比快速排序的時間複雜度還要穩定,但是快速排序的效能要比堆排序好。什麼是堆 堆是乙個完全二叉樹。堆上任一節點的值都大於等於它的左右子樹的值,或者小於等於它的左右子樹的值。對於每個節點大於...

演算法筆記之堆排序

一 對堆排序的相關了解 1 堆排序的執行時間是 o nlogn 2 定義 堆heap是一棵具有下面屬性的二叉樹 1 它是一棵全然二叉樹。2 每乙個結點大於或等於它的隨意乙個孩子。備註 全然二叉樹的定義 除了最後一層沒填滿以及最後一層的葉子都是偏左放置的。其它層都是滿的二叉樹!3 二叉堆有兩種 最大堆...

漫畫演算法筆記 堆排序

include include include include include using namespace std 下沉調整 template typename t void downadjust vector vec,int parentindex,int size 如果父節點小於任何乙個孩子...