堆排(大頂堆c語言)
借鑑的別人的**自己做了一些注釋便於理解
#include
#include
//這是乙個大頂堆,實現從小到大排序 !!堆頂序號從1開始編號!!
void swap(int k ,int i ,int j)
//交換堆頂和最後乙個節點的資料(具體使用時i = 1,即第乙個節點下標,j就是最後乙個節點的下標)
void heapadjust(int k,int s,int n)//k:陣列指標,s:父節點下標,n:末尾節點下標
//迴圈是從輸入的父節點位置開始一直到最後的節點都進行堆調整
}//堆調整,從父節點一直往下調整
void heapsort(int k,int n) //k:陣列指標,n:末尾節點下標
//從n/2節點處從右往左從下往上調整堆,使得這個堆成為乙個大頂堆,即堆的初始化
for(i = n ;i > 1 ;i --)
}//堆排序
int main()
;heapsort(k,21);
for(i = 1;i <= 21;i++)
return 0;
}
堆排(大頂堆,小頂堆)
分類 資料結構 演算法相關 2009 10 15 12 26 2289人閱讀收藏 舉報汗,別人都說大小頂堆只是改改大於號的問題,可我的 從大頂堆只改動大於號調整為小頂堆竟然越界樂,掣肘!後來幾經更改才發現是傳參的問題 見 看來大頂堆改小頂堆不是 亦或是我rp出點問題?搞笑的是 磚頭 c b 竟然對越...
大頂堆小頂堆
堆通常是乙個可以被看做一棵完全二叉樹的陣列物件 如果對一棵有n個結點的完全二叉樹的結點按層序編號 從第1層到第 1層,每層從左到右 則對任一結點i 1 i n 有 1 如果i 1,則結點i無雙親,是二叉樹的根 如果i 1,則其雙親是結點。2 如果2i n,則結點i為葉子結點,無左孩子 否則,其左孩子...
堆排序(大頂堆)
ifndef maxheap define maxheap includeusing namespace std const int capacity 100 class maxheap void push const int data void initialize int a,int thesi...