演算法導論 堆排序遞迴實現 (c語言)

2021-06-29 14:16:22 字數 669 閱讀 5346

我們演算法老師讓我下節課講一下堆排序的演算法,我就受累寫了如下的**,初學c語言的可以參照著看一下,如果你現在初學c語言,那麼恭喜你你學習了一門可以收益終身的語言,c語言學好走遍天下都不怕,這是真的所有的我覺的c語言就是乙個基礎中的基礎。

#include 

#include

static

int heapsize=0;//堆大小

static

int len=0;//陣列長度

//函式宣告

void swap();

void maxheapify();

void buildmaxheap();

void heapsort();

int main ()

heapsort(a);

for (i=1;i<=len;i++)//列印結果

free(a);

}void maxheapify(int *a,int i)

}void buildmaxheap(int *a)

}void swap(int *a,int *b)

void heapsort(int *a)

putchar(10);

for (i=heapsize;i>=2;i--)//堆排序

}

加油!!!

演算法導論 堆排序實現

我建立了乙個heap的資料結構,而不是像stl那樣使用函式解決堆排序,當然stl的比較優雅一點,我只是提供第二個思路 ifndef heap sort h define heap sort h include include include ifdef debug include endif deb...

演算法導論堆排序實現

部分有序使用堆排序效率較高,基本有序使用插入排序或氣泡排序效率較高 include include 調整函式要求除了要調整的點,都要滿足堆的性質 void maxheapify int a,int i,int length else 取父節點 左右節點最大值 if right length 1 a ...

演算法導論 堆排序

堆排序演算法 heapsort max heapify過程,其執行時間為 lg n 是保持最大堆性質的關鍵 build max heap過程,以線性時間執行,可以在無序的輸入陣列基礎上構造出最大堆 heapsort過程,執行時間 n lg n 對乙個陣列原地進行排序 heapsort過程 1 建最大...