排序演算法 堆排序(大頂堆 小頂堆)

2021-08-25 08:37:36 字數 1145 閱讀 8960

堆排序的思想這裡就先不講了,以後有時間再補上,下面是分別採用大頂堆和小頂堆實現的堆排序。

注意:下面例子中排序的數字是。

大頂堆方式

#include 

#include

using

namespace

std;

//堆調整

//將nums[s..m]調整為大頂堆,其中除了nums[s]之外均滿足大頂堆的定義

void heapadjust(int nums,int s, int m)

nums[s] = nums[0];

}void heapsort(int nums,int n)

//將整個根節點根節點最後乙個子節點進行交換

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

}int main()

; heapsort(nums,9);

cout

<< "排序結果:";

for(int i = 1; i < 10;i++)

system("pause");

return

0;}

小頂堆方式

#include 

#include

using

namespace

std;

//堆調整

//將nums[s..m]調整為小頂堆,其中除了nums[s]之外均滿足小頂堆的定義

void heapadjust(int nums,int s, int m)

nums[s] = nums[0];

}void heapsort(int nums,int n)

//將整個根節點根節點最後乙個子節點進行交換

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

}int main()

; heapsort(nums,9);

cout

<< "排序結果:";

for(int i = 1; i < 10;i++)

system("pause");

return

0;}

Java 堆排序 大頂堆 小頂堆

引用 堆排序 heapsort 是指利用堆這種資料結構所設計的一種排序演算法。堆積是乙個近似完全二叉樹的結構,並同時滿足堆積的性質 即子結點的鍵值或索引總是小於 或者大於 它的父節點。堆排序的平均時間複雜度為 nlogn 演算法步驟 1.建立乙個堆h 0.n 1 2.把堆首 最大值 和堆尾互換 3....

常見排序演算法 堆排序 與 小頂堆大頂堆

大頂堆 完全二叉樹,每個結點的值都大於或等於其左右孩子結點的值 小頂堆 完全二叉樹,每個結點的值都小於或等於其左右孩子結點的值 include include include include using namespace std 小頂堆 class smalltopheap virtual sma...

大頂堆 小頂堆 堆排序

堆的定義 n個元素的序列當且僅當滿足下列關係之一時,稱之為堆。大頂堆 k i k 2i 且k i k 2i 1。小頂堆 k i k 2i 且k i k 2i 1。堆序列可以理解成乙個完全二叉樹,該樹任意乙個結點的關鍵字的值都小於或等於它的孩子結點的關鍵字。例如 堆排序 若在輸出堆頂的最小值之後,使得...