用不同的方法插二叉堆binary heap

2021-10-10 06:14:10 字數 1263 閱讀 1320

第一種方法,乙個乙個插入

第二種方法,全部插進去再從n/2開始乙個乙個比較向前移動

二話不說上**,具體的都在注釋裡了

#include

#include

#include

intcheck

(int

*array,

int i)

;int

main()

;//儲存我的所有資料//

int way1[

100]=;

//用第一種方法乙個乙個插入//

int n;

int j=1;

int temp;

int k=0;

scanf

("%d"

,&n)

;//得到我需要插多少個數//

for(

int i=

1;i<=n;i++

)//從1開始而不是從0開始,這裡用的是陣列的方法//

//way1//

for(

int i=

1;i<=n;i++

) j++;}

//按照要求列印出來//

for(

int i=

1;i1;i++)}

printf

("\n");

//way2//

for(

int i=n/

2;i>

0;i--

)//按照要求列印出來//

for(

int i=

1;i1;i++)}

return0;

}int

check

(int

*array,

int i)

}else

}return0;

}//如果沒有子節點//

else

if(array[m]==0

&&array[n]==0

)//如果有乙個子節點//

//在這種情況下只有左節點存在,因為我們是按照順序建的樹//

else

else

}return0;

}

二叉堆的實現

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...

二叉堆的應用

有乙個無序陣列,要求你找出陣列中第k大的元素。給定的無序陣列如下 75 153172 202419 128如果 k 6,也就是要尋找第6大的元素,這個元素是哪乙個呢?顯然,陣列中第一大的元素是24,第二大的元素是20,第三大的元素是17 第6大的元素是9。75 153172 202419 12843...