Javaにはマルチセットがあり、SmallTalkにはBagクラスがあり、それらは同じ関数であると言われています。値のセットを保持しますが、複数の値を許可します(それぞれにカウントがあります)。
しかし、マルチセットは、キーのカウントを保持するハッシュテーブルによって実装できるようです(または他の可能な実装があるかもしれません)。
マルチセットまたはバッグの一部の実装は、上記のハッシュよりも時間計算量が優れていますか?必要な操作は
- アイテムを挿入
- アイテムを削除
- セット内の最小値を取得します
- セット内の最大値を取得します
特に、上記の4つの操作のそれぞれについて、それがより良くO(n)
、おそらくすべてO(log n)
またはより良く行われることを望んでいます。O(log n)
(上記の3と4は、値が追加または削除されるたびにマルチセットが何らかのソートされた方法で維持される場合にのみ発生すると予想されます。)