0

クエリを実行したい範囲のリストがあります。範囲は整然としており、重複していません。

元:

1-10、11-17、18-20、21-30など...

現在、修正された二分探索を使用しています。しかし、私は今、新しいリストを持っています...重複しない範囲であることに加えて、新しいリストを使用して、範囲をビットマスクできるようになりました。

元:

0 ~ 255、256 ~ 287、288 ~ 303 など...

数千の範囲があり、約 500,000 で終了します

これを c で実装しますが、言語はそれほど重要ではありません。この新しいプロパティを活用する方法について、いくつかのアイデアを探しています。誰かがこれに遭遇した/それについて読んだことがありますか? 誰かが何か考えを持っているなら、彼らは大歓迎です。:)

4

1 に答える 1

0

サイズ 500000 のビットベクトルを保持するのはどうですか? それには約61kbかかります。

次に、AND を実行して、数値が O(1) の範囲内にあるかどうかをクエリできます。複数の値を同時にクエリすることもできます。また、並べ替えが不要なため、範囲ビット ベクトルの設定は非常に高速になります。

于 2012-11-13T19:40:03.863 に答える