1

最大値を見つけるのに最適なデータ構造を知りたいのですが、それは C# で実装されていますか? 今のところ、SortedDictioniry を使用していますが、キーを並べ替えます。基本的にキーを並べ替える必要はありませんが、最大値を見つけるためのより高速な方法が必要です。また、最大値を見つけた後、この値に対応するキーまたはインデックスが必要です。また、要素の素早い挿入と素早い除去が可能であれば、できれば O(log n) を超えないことを願っています。そのような構造はありますか、どうすればそれを使用できますか? ありがとうございました!

4

3 に答える 3

4

これは最大ヒープのように聞こえますが、最初から実装する方法に関するオンライン情報がたくさんあります(C#標準データ構造の一部ではありません)。

たとえば、詳細な説明を含むこの実装を見てください。

于 2012-12-07T14:16:07.950 に答える
1

前述のように、最も効率的なのは max-heap です。これは .Net の一部ではありませんが、 IntervalHeap ( http://www.itu.dk/research/c5/から)などのサードパーティ ライブラリから選択できます。

于 2012-12-07T14:31:30.677 に答える
0

SortedList<TKey, TValue>aまたは aを使用できますSortedDictionary<TKey, TValue>(既に行っているように)。もう 1 つの適切なコレクション タイプは、Max-Heap です。ただし、.NET クラス ライブラリには含まれていません。

MSDN での比較については、SortedList および SortedDictionary コレクション タイプも参照してください。また、最大値へのアクセス時間を短縮したい場合は、何らかの方法でキーでソートする以外に別の可能性はないと思います。

于 2012-12-07T14:25:05.303 に答える