資料結構 堆排序

2021-06-26 03:53:19 字數 700 閱讀 8758

#include #include void maxheapify(int a,int length,int i);

void buildmaxheapify(int a,int length);

void heapsort(int a,int length);

void main(void);

printf("heapsort algorithm\n");

heapsort(a,10);

for(i=0;i<10;i++)

printf("%d\n",a[i]);

while(1);

}//在i的左右都滿足最大堆性質時,使陣列中下標為i的節點滿足最大堆性質

void maxheapify(int a,int length,int i)

return;

}//使陣列為最大堆,此時a[0]即為最大值

//採用自底向上方法構建最大堆,因為單獨的葉節點一定滿足最大堆性質

void buildmaxheapify(int a,int length)

return;

}//堆排序演算法,首先構造最大堆,然後迴圈找到最大值

void heapsort(int a,int length)

}

vs2010已經除錯成功。和演算法導論描述一致。

資料結構 堆排序 堆排序 Heap Sort

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

資料結構 堆排序

1 堆排序的時間複雜度與歸併排序相同,o nlogn 堆排序的優勢在與他只需要固定數量的額外空間,堆排序要比空間複雜性為o n 的歸併排序稍微慢一些,但是比空間複雜性為o 1 的歸併排序要快。2 對序列 26,5,77,1,61,11,59,15,48,19 進行堆排序 過程 調整最大堆 二叉堆 v...

資料結構 堆排序

堆排序 heapsort 是指利用 堆這種資料 結構所設計 的一種排序演算法。堆是乙個近似完全二叉樹的結構,並同時滿足堆性質 即子結點的鍵值或索引總是小於 或者大於 它的父節點。pragma once include includetemplateclass heap heap const t a,...