堆排序的順序儲存

2021-07-24 04:29:51 字數 703 閱讀 2639

堆排序順序儲存(公升序)

㈠ 完全二叉樹的概念:前h-1層為滿二叉樹,最後一層連續缺失右結點!

㈡ 首先堆是一棵全完二叉樹:

a:構建乙個堆分為兩步:⑴建立一棵完全二叉樹      ⑵調整為乙個堆

(標註:大根堆為公升序,小根堆為降序)

b:演算法描述:①建立一棵完全二叉樹   

②while(有雙親)

c:時間複雜度為 o(nlogn)  ,空間複雜度為 o(1), 是不穩定排序!

㈢ **實現:

/*堆排序思想:[完全二叉樹的定義:前 h-1 層為滿二叉樹一最後一層連續缺失右結點(即右子女)],(大根堆公升序排序,小根堆降序排列)

首先堆是乙個完全二叉樹 ,根據陣列下標就可建成了一棵完全二叉樹

其次:while(有雙親)

*/#include #define n 100

using namespace std;

int b[n]=; //儲存資料的陣列

int n=0; //記錄資料的總個數【0單元不要,實際元素個數為(n-1)個】

void swap(int *x,int *y)

void adjust()

}

int main(void)

heapsort(); //堆排序

cout<<"大根堆公升序排列為:"<

了解了解堆排序的順序儲存

a 構建乙個堆分為兩步 1 建立一棵完全二叉樹 2 調整為乙個堆 b 演算法描述 建立一棵完全二叉樹 while 有雙親 c 時間複雜度為 o nlogn 空間複雜度為 o 1 是不穩定排序!auther yangchao date 2019 7 31 堆排序思想 完全二叉樹的定義 前 h 1 層為...

堆排序 堆排序優化 索引堆排序

堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...

堆排序 堆排序優化 索引堆排序

堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...