堆(英語:heap)是電腦科學中一類特殊的資料結構的統稱。堆通常是乙個可以被看做一棵樹的陣列物件。堆總是滿足下列性質:
將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆、斐波那契堆等。他們的時間複雜度如下:
0# 先置為零, 只要經過一次swap函式,就再次置為1
index =
len(self.arr)-1
for i in
range
(index)
:if i *2+
2<= index:
# 如果左右兩個子節點都存在,去比較他們的大小
self.tri(i, i *2+
1, i *2+
2)elif i *2+
1<= index:
# 如果只有左子節點存在,去比較他們的大小
if self.arr[i]
< self.arr[i *2+
1]: self.swap(i, i *2+
1)else
:break
deftri
(self, head:
int, left:
int, right:
int)
:if self.arr[head]
< self.arr[left]
: self.swap(head, left)
if self.arr[head]
< self.arr[right]
: self.swap(head, right)
defswap
(self, index_1:
int, index_2:
int)
: self.mark =
1 temp = self.arr[index_2]
self.arr[index_2]
= self.arr[index_1]
self.arr[index_1]
= temp
defshow
(self)
(self.arr)
defpop
(self)
->
int:
self.arr[0]
= self.arr[-1
] temp = self.arr.pop(
) self.mark =
1while self.mark ==1:
self.build(
)return temp
defpush
(self, value:
int)
: self.mark =
1while self.mark ==1:
self.build(
)
二叉堆的實現
include include define max heap size 101 class binaryminheap void insert intvalue void removemin intgetmin void displayheaparray private int heaparray...
二叉堆的實現
1.堆的概念 這裡只需要注意兩點 a.堆的儲存方式 就是順序儲存在陣列中,在二叉樹中表現為滿二叉樹 b.堆的用處 用於排序,查詢最大最小都非常方便 2.堆的實現 heapexception.h ifndef heapexception h define heapexception h class a...
二叉堆的實現
二叉堆是一種特殊的堆,二叉堆是完全二元樹 二叉樹 或者是近似完全二元樹 二叉樹 二叉堆有兩種 最大堆和最小堆。最大堆 父結點的鍵值總是大於或等於任何乙個子結點的鍵值 最小堆 父結點的鍵值總是小於或等於任何乙個子節點的鍵值。二叉堆一般都通過 陣列 來實現。陣列實現的二叉堆,父節點和子節點的位置存在一定...