私は整数の順序付きリストを保持できるデータ構造(または構造体)を探しています。重複はなく、インデックスと値は同じです範囲。高速ランダムアクセス、検索、挿入、削除のための効率的なデータ構造
- に値を挿入する所定の値
- の指標を求める指定されたインデックス
- から値を取る:
Iは、重要度の粗いために、効率的に4つの主要な操作を必要とします私はOで1(1)を有するが、2はO(N)であり、アレイを使用して、指定されたインデックス
の値を削除指定されたインデックス
リンクされたリストにはO(1)の挿入と削除がありますが、1と2はO(N)なので、利得は無効になります。
私は1と2をO(1)にするが、3と4をもっと高価な操作に変えるa [index] = valueとb [value] = indexの2つの配列を保持しようとした。
これに適したデータ構造はありますか?
あなたはどの言語を使用していますか? –
本当に問題ではありませんが、C++です – Leonel
問題ありません。すべての言語が同じデータ構造を提供するわけではありません。たとえば、この特定の問題は、C Judy配列またはC#CPTrieによって非常に効率的に解決できます。 (または、もちろん、Aymanのようなバランスの取れたバイナリツリーがあります。) – Qwertie