最小堆,是完全二叉樹,其基本定義是任何乙個節點小於其左右子樹的節點
常見操作:加入乙個值,取最小值,刪除最小值
加入乙個值,直接加入到末尾a[size++]然後該元素上浮到合適位置
最大值即根節點 a[0]
刪除最小值,讓末尾元素填充到a[0] 然後該元素下沉到合適位置
下沉過程中,選取左右子節點的最小值,上浮(任滿足節點大於左右子樹)
易錯點,樹中沒有節點,以及下沉過程中,是否存在左右子樹的判斷(即基本的陣列區間判斷)
class heap
void up(int index) //arr[index]位置元素上浮
arr[index] = flag;//最終填入位置
}int min()
void del() //刪除根元素 最小元素後 最後元素填上,然後下沉
arr[0] = arr[size - 1];//將最後乙個填充到根頂部
size--;
down(0);//從根節點開始下沉
}void down(int index) //arr[index]位置元素下沉
}else}}
else //不存在右子樹}}
}};
6 資料結構 最小堆
開發過程,經常需要對資料集合進行維護。維護資料結合的資料結構可統稱為容器。最小堆是維護資料集合的容器的一種,最小堆具備如下性質 設v i 為位置i的元素值 1.對維護的n個元素,順序儲存於索引為1 n的陣列位置 2.對索引i,若索引2 i n,有v i v 2 i 若索引2 i 1 n,有v i v...
opencv基本資料結構
iplimage 首先介紹重要的成員變數 width和height表示了的尺寸。其次是depth和nchannels,depth是指畫素顏色的取值範圍,nchnannels為影象的通道,可以取1,2,3,4 origin變數定義了影象的原點,有兩個取值,分別是ipl origin bl和ipl or...
Python 基本資料結構
列表是python裡的內建的型別之一,可以新增和刪除其中的元素。如 role sam 33 dean 37 可以列表中包含列表,同一列表中包含不同型別的資料。下面介紹列表的一些通用操作,關於list的其他用法,可以通過help list 檢視。a 2,13,12,41,17,23 a 1 列表從0開...