0

これは非常に一般的な質問ですが、明確な答えはどこにも見つかりませんでした。私がやっていることは、2 つの stacks を使用して Queue を実装することです。ノードでは、 data とともに、最小値と最大値も維持します。実装は Java で行われます。

さて、問題は、first element is Max / Minそれを deQueue すると、残りのノードには、dequeu されたものとして最小/最大値が含まれることです。

例 :10 7 8 9 2

ノード - [データ、最大、最小]

[10,10,10] , [7,10,7] ,[8,10,7] , [9,10,7] , [2,10,2]

ここで、デキューすると、キューは次のようになります。[7,10,7] ,[8,10,7] , [9,10,7] , [2,10,2]

また、最小値と最大値が間違っています (10,7) が、(9,2) である必要があります。

私のアルゴリズムは基本的にスタックに対して機能し、キューを使用しています。では、正しい結果が得られるようにアルゴリズムを変更するにはどうすればよいですか?

4

2 に答える 2

0

heapsort 内のheapify()を見てください。これはあなたが必要としているものだと思います...

于 2012-08-21T19:52:23.453 に答える
0

これはあなたが必要とするものですか?

両端キューは、次の 2 つの方法でコーディングできます。

  • キューの 2 つのコピーを持ち、要素ごとに対応する要素へのリンクを維持する

  • 最小最大ヒープと呼ばれるデータ構造を使用する

于 2012-08-21T22:17:52.977 に答える