郭郭自學筆記(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 如果父節點小於任何乙個孩子...