排序演算法 3,堆排序

2021-08-08 13:21:34 字數 975 閱讀 7120

#include 

inth[15] = ;

//堆陣列

,h[0]

不在計算範圍內

,不是堆裡的元素

,請忽略

intn = 14

;

//堆元素個數

//交換兩個數

voidswap(int*x,

int*y)

//向下調整下標為

i的節點

voidsiftdown(inti)

//否則該節點已滿足最小堆要求

,跳出迴圈

elsebreak;}}

//每次生成最小堆後最小的數肯定就在根節點

,返回根節點的數

intdeletemin()

//生成最小堆

voidcreatheap()

}voidmain()

printf("

\ncreate the minheap:

\n");

creatheap();

for(inti = 1

; i <= n ; ++i)

//依次輸出根節點

printf("

\nsort after:

\n");

for(inti = 1

; i <= 14

; ++i)

}

演算法 3 堆排序

堆排序是一種選擇排序,其時間複雜度為o nlogn 堆的定義 n個元素的序列當且僅當滿足下列關係之一時,稱之為堆。情形1 ki k2i 且ki k2i 1 最小化堆或小頂堆 情形2 ki k2i 且ki k2i 1 最大化堆或大頂堆 其中i 1,2,n 2向下取整 若將和此序列對應的一維陣列 即以一...

演算法 3 堆排序

堆排序是一種選擇排序,其時間複雜度為o nlogn 堆的定義 n個元素的序列當且僅當滿足下列關係之一時,稱之為堆。情形1 ki k2i 且ki k2i 1 最小化堆或小頂堆 情形2 ki k2i 且ki k2i 1 最大化堆或大頂堆 其中i 1,2,n 2向下取整 若將和此序列對應的一維陣列 即以一...

演算法 3 堆排序

堆排序是一種選擇排序,其時間複雜度為o nlogn 堆的定義 n個元素的序列當且僅當滿足下列關係之一時,稱之為堆。情形1 ki k2i 且ki k2i 1 最小化堆或小頂堆 情形2 ki k2i 且ki k2i 1 最大化堆或大頂堆 其中i 1,2,n 2向下取整 若將和此序列對應的一維陣列 即以一...