我們演算法老師讓我下節課講一下堆排序的演算法,我就受累寫了如下的**,初學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 建最大...