0
少し助けてもらえます。したがって、heapsizeは配列内の要素の数として宣言されます。データは配列です。なぜheapsize ++をやるの? maxSizeは、配列のサイズとして宣言されます。ヒープに要素を追加すると、最後の位置に移動します。なぜheapsizeを最初に増やし、heapsizeが最後の空の位置になるので、単にデータをheapsizeに入れないでください。ありがとう!最大ヒープでの挿入
public void insert(int item)
{
int position;
if (isFull()) throw new Exception();
heapsize++;
data[heapsize-1] = item;
position = heapsize - 1;
while (position>0 && data[(position-1)/2])
{
swap(position, (position-1/2));
position = (position-1)/2;
}
}
は 'IF(データ[(位置1)/ 2] <データ[位置])' – roottraveller
混乱やバギーコードであるべきです。あなたはそれを取り除き、あなた自身でコード化できませんか?あなたが出来たら良かったのに。 –
'heapsize'をインクリメントするとスタイルが変わります。挿入前後で差はありません。より大きな問題は、while文の条件文が壊れていることです。 'position'の項目をその親と比較する必要があります。あなたが書いたものは、あなたが挿入する項目が0でない限り、常にその項目をルートに移動します。 –