堆排序之二

2021-06-19 13:40:18 字數 386 閱讀 1294

昨天後來做堆排序演算法時候卡住了,今天解決了半天,最後發現居然是乙個<=還是《的問題。這樣的錯誤已經至少兩次了,為啥就是不能避免呢。

利用昨天做的heapify函式,實現堆排序。原則就是每次形成乙個大根堆,然後把最大的扔到最後去,再對前面剩下的那些排序,生成大根堆,每次這樣,直到最後大根堆中只有乙個元素。

#include

using namespace std;

int n(11);

void heapify(int a,int i)

//else heapify(a,l);

}int main()

;for(int i=n;i>0;i--)

for(int j=1;j=1;t--)

cout<

資料結構之二叉堆 堆排序

很久以前排序演算法的時間複雜度一直是o n 2 當時學術界充斥著 排序演算法不可能突破o n 2 的聲音,直到1959年,由d.l.shell提出了一種排序演算法,希爾排序 shell sort 才打破了這種不可能的聲音,把排序演算法的時間複雜度提公升到了o n 3 2 當科學家們知道這種 不可能 ...

資料結構之二叉堆 堆排序

很久以前排序演算法的時間複雜度一直是o n 2 當時學術界充斥著 排序演算法不可能突破o n 2 的聲音,直到1959年,由d.l.shell提出了一種排序演算法,希爾排序 shell sort 才打破了這種不可能的聲音,把排序演算法的時間複雜度提公升到了o n 3 2 當科學家們知道這種 不可能 ...

排序二 堆排序

子結點的鍵值或索引總是小於 或者大於 它的父節點。堆通過一維陣列實現。在起始陣列為 0 的情形中 父節點i的左子節點在位置 2 i 1 父節點i的右子節點在位置 2 i 2 子節點i的父節點在位置 floor i 1 2 堆中的最大值總是位於根節點。堆中定義以下幾種操作 1 最大堆調整 max he...