資料結構示例 堆排序過程

2021-09-30 16:36:18 字數 785 閱讀 4173

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

完整演算法見[例程],本文用乙個例子,演示堆排序的過程。

例:對進行堆排序的過程。

演算法如下:

void heapsort(rectype r,int n)}
(1)迴圈建立初始堆

for (i=n/2; i>=1; i--)         sift(r,i,n);
用給出的序列構造堆的初始狀態如下:

在此基礎上,根據上述**,從最後乙個分支節點開始調整,目標是得到大根堆。過程如下圖:

這個堆的儲存結構是:

(2)進行n-1次迴圈,完成推排序

for (i=n; i>=2; i--)
過程圖示如下:

請繼續補充畫完。

給我老師的人工智慧教程打call!

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

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

資料結構 堆排序

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 heap...

資料結構 堆排序

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