最近の研究では、最小スパニングツリー、彼は書き留めてある疑問に、この構造のプライオリティキューを使用し、だから今ようやく書かれたので、彼が記録
輸入はjava.util.ArrayList; クラス MyHeap <タイプ 延び同等<タイプ>> { プライベートのArrayList <タイプ> データ。 プライベート int型のMaxSize。 プライベート int型のサイズ。 パブリックMyHeap(){ この .MaxSize = 0 。 この .size = 0 ; } パブリック ブール追加(タイプElemの){ 場合(この .size> = この.MaxSize){ のMaxSize =のMaxSize +((MaxSizeの>> 1)> 1(MaxSizeの>> 1):1 )。 配列リスト<タイプ> TEMP = 新規のArrayList <タイプ> (のMaxSize)。 以下のために(int型 i = 0; I < 本 .size; ++ I){ temp.add(I、data.get(I))。 } データ = TEMP。 } data.add(Elemの)。 int型 childIndexに= この.size。 タイプchildNodeが = data.get(サイズ)。 一方、(childIndexに> = 0 ){ int型 parentIndex =(childIndexに-1)>> 1 。 もし(parentIndex <0 ){ 破ります。 } もし(data.get(parentIndex).compareTo(childNodeが)<0 ){ data.remove(childIndexに)。 data.add(childIndexに、data.get(parentIndex))。 } 他{ 破ります。 } childIndexに = parentIndex。 } data.remove(childIndexに)。 data.add(childIndexに、childNodeが)。 この .size + = 1 ; 返す 真; } パブリック ブールshowHeap(){ ため(int型 i = 0; I < 本 .size; ++I){ System.out.print(data.get(I) +」 " )。 } を返す 真。 } パブリック ブール{()を削除 する場合(この .size> = 1 ){ この .size- = 1 。 data.add( 1、data.get(この.size))。 data.remove( 0 )。 int型 parentIndex = 0 ; 入力のparentNode = data.get(parentIndex)。 int型のインデックス=(parentIndex << 1)+1 ; しばらく(インデックス+ 1 < この.size){ 場合(data.get(インデックス).compareTo(data.get(インデックス+ 1))<0 ){ インデックス ++ 。 } であれば(data.get(インデックス).compareTo(のparentNode)> 0 ){ data.add(parentIndex、data.get(インデックス))。 data.remove(parentIndex +1 )。 } 他{ 破ります。 } parentIndex = ランキング; インデックス =(parentIndex << 1)+1 。 } data.add(parentIndex、のparentNode)。 data.remove(parentIndex +1 )。 返す 真; } 他{ 戻り 偽。 } } } パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ MyHeap <整数>スペース= 新しい MyHeap <整数> (); space.add( 12 )。 space.add( 4 )。 space.add( 17 )。 space.add( 56 )。 space.add( 20 space.add()。 space.add( 30 )。546 ); space.add( 53 )。 space.delete(); space.showHeap(); } }