堆
最大堆特點:
a)每個節點最多可以有兩個節點
b)根節點的鍵值是所有堆節點鍵值的最大者,且每個節點的值都比其孩子的值大。
c)除了根節點沒有兄弟節點,最後乙個左子節點可以沒有兄弟節點,其他節點必須有兄弟節點。
堆是最有個性的樹!它是用陣列表示的樹
i的子節點左:2i+1
i的右子節點:2i+2
i的父節點:(i-1)/2
#define default_capcity 128
struct heap
;
#include
#include
using
namespace std;
#define default_capcity 128
struct heap
;//對外的介面
bool
initheap
(heap &heap,
int*orginal,
int size)
;//初始化
bool
insert
(heap &heap,
int value)
;//插入堆
bool
popmax
(heap &heap,
int&value)
;//出堆
static
void
buildheap
(heap &heap)
;//建立堆
static
void
adjustdown
(heap &heap,
int index)
;//向下調整
static
void
adjustup
(heap &heap,
int index)
;//向下調整
//初始化堆
bool
initheap
(heap &heap,
int*orginal,
int size)
}return
true;}
/* 從最後乙個父節點(size/2-1的位置)逐個往前調整所有的父節點(直到根節點)
確保每乙個父節點都是乙個最大堆,最後整體上形成乙個最大堆
*/void
buildheap
(heap &heap)
}//將當前的節點和子節點調整成最大堆
void
adjustdown
(heap &heap,
int index)
//判斷最大的節點是否大於當前的父節點
if(cur >= heap.arr[child]
)//不大於,則不需要調整,跳出迴圈
else
//大於當前的父節點,進行交換,然後從子節點位置向下調整}}
//向上調整,將當前的節點和父節點調整成最大堆
void
adjustup
(heap &heap,
int index)
else
//如果已經比父親小,直接結束迴圈
}else
//越界結束迴圈}}
//刪除最大節點,並獲得節點的值
bool
popmax
(heap &heap,
int&value)
//最大堆尾部插入節點,同時保證最大堆的特性
bool
insert
(heap &heap,
int value)
int index = heap.size;
heap.arr[heap.size++
]= value;
adjustup
(heap, index)
;return
true;}
intmain()
;int i =0;
if(!initheap
(hp, ori**als,
sizeof
(ori**als)
/sizeof
(ori**als[0]
)))for
(i =
0; i < hp.size; i++
)//堆中插入元素
insert
(hp,99)
; cout <<
"在堆中插入新的元素99,插入結果如下:"
<< endl;
for(i =
0; i < hp.size; i++
)//堆中元素出列
cout <<
"最大元素依次出列:"
<< endl;
int value;
while
(popmax
(hp, value)
)system
("pause");
return0;
}
學習前端的第二十四天
一 grid布局 針對的是子元素布局。1.形成乙個網格結構 父元素新增 display grid 2.劃分行和列 grid template columns grid template rows 如果是3個值 代表3行或3列 能接受具體的px 也能是百分比 劃分行和列的時候的關鍵字 和 方法 a r...
python 學習第二十四天(同步鎖和遞迴鎖)
import time import threading defaddnum global num 在每個執行緒中都獲取這個全域性變數 num 1 temp num print get num num time.sleep 0.1 可以把時間調短一點,看看是什麼效果 num temp 1 對此公共變...
學習C C 的第二十五天 資料結構 棧
棧 進出的一端稱為棧頂 top 另一端稱為棧底 base 棧可以用順序儲存,也可以用鏈式儲存。注意 棧只能在一端操作,後進先出,這是棧的關鍵特徵,也就是說你允許在中間查詢 取值 插入 刪除等操作,我們掌握棧的初始化 入棧 出棧 去棧頂元素。define max size 128 typedef in...