最大堆最小堆

2021-08-26 18:19:22 字數 766 閱讀 4903

最大堆:向下調整運算。

/*

// 最大堆

#include#define n 100

void adjustheap(int heap,int s,int m)

if(temp > heap[j])

heap[s] = heap[j];

s = j;

}heap[s] = temp;

}void createheap(int heap,int n)

}int main()

createheap(heap,n);

for(int i = 0;i < n;i ++)

return 0;}*/

// 最小堆

#include#define n 8

void adjustheap(int heap,int s,int m)

if(temp < heap[j])

heap[s] = heap[j];

s = j;

}heap[s] = temp;

}void createheap(int heap,int n)

}int main()

createheap(heap,n);

for(int j = 0;j < n;j ++)

return 0;

}

ps:好像有點問題,當時做的時候好像能得出正確答案,現在執行程式發現得出的結果是錯的,不知道錯在**。

最大堆 最小堆

堆是一種經過排序的完全二叉樹,其中任一非終端節點的資料值均不大於 或不小於 其左孩子和右孩子節點的值。最大堆和最小堆是 二叉堆的兩種形式。最大堆 根結點的鍵值是所有堆結點鍵值中最大者。最小堆 根結點的鍵值是所有堆結點鍵值中最小者。而最大 最小堆集結了最大堆和最小堆的優點,這也是其名字的由來。最大 最...

最大堆 最小堆

堆的定義是 n個元素的序列,當且僅當滿足如下關係時被成為堆 1 ki k2i 且 ki k2i 1 或 2 ki k2i 且 ki k2i 1 i 1,2,n 2 當滿足 1 時,為最小堆,當滿足 2 時,為最大堆。若將此序列對應的一維陣列堪稱是乙個完全二叉樹,則2i和2i 1個節點分別是節點i的左...

最大堆 最小堆

堆的定義是 n個元素的序列,當且僅當滿足如下關係時被成為堆 1 ki k2i 且 ki k2i 1 或 2 ki k2i 且 ki k2i 1 i 1,2,n 2 當滿足 1 時,為最小堆,當滿足 2 時,為最大堆。若將此序列對應的一維陣列堪稱是乙個完全二叉樹,則2i和2i 1個節點分別是節點i的左...