削除の[]データ構造ヒープ

タイトル

ヒープは、x復帰、削除trueを返し、成功、偽の失敗を返すことにより、POS内の要素の特定の最小数を達成削除します。(注:データ構造を削除した後、最小ヒープを維持することです。)

アルゴリズム

最小ヒープは、POSなどの元素の所定数の後に削除され、我々は、シートの最後の要素に要素のスタックを削除することができ、その後、ヒープの位置の上方調節から、スタックとして下方調節します。
falseに空のスタック戻る場合
//要素戻す; 2 = Xヒープ[POS]
3ヒープ[POS] =ヒープ[ currentSize - 1]; // 接合POSを充填する最後の要素
。4 currentSize--;
5 siftDown(POS、。 currentSize - 1); //はトップダウンスタック調節
6 siftUp(POS); //スタックが調整される上向き
の時間複雑度はO(LOGN)

コード

template <class E>bool MinHeap <E>::Remove(int &pos,E &x) 
{
    if (!currentSize) { //堆空, 返回false   
        cout << "Heap empty" << endl;
        return false;
    }
    x = heap[pos];      // 返回该元素
    heap[pos] = heap[currentSize - 1];  //最后元素填补到pos结点
    currentSize--;
    siftDown(pos, currentSize - 1);//自上向下调整为堆
    siftUp(pos);
    return true;
}

おすすめ

転載: www.cnblogs.com/muyefeiwu/p/11838600.html