最適化アプローチに関するいくつかの問題を読んでいます。
特定の範囲で数値をソートする方法の問題では、解決策はビットマップを使用することです。また、数値が最大 10 回表示される場合は、半バイトを使用して数値をマップし、発生回数を表すカウンターとして使用します。
コンセプトよくわかります。私の問題は、これをJavaで簡単に実装する方法です。
私はビット操作で立ち往生しています。
たとえば、カウンターを 1 ずつインクリメントする最初の部分については、次のように考えることができました。
バイトを見つけます。
たとえば、下位ビットを取得するためにbitValue[i]
実行byte tmp = bitValue[i] & 0x0F
します (カウンターが下位カウンターの場合)。
次に dotmp = tmp + 1
で 1 ずつインクリメントします。
次に dobitValue[i] >> 2
で下位ビットをクリアしbitValue[i] <<2
てから元に戻します。これで、オリジナルと同じ上位ビットと下位ビットがクリアされました。
次にbitValue[i] |= tmp
、下位ビットを設定します。これで、下位ビット カウンターが 1 ずつインクリメントされました
。bitValue
上位ビットの場合は同じプロセスになりますが、上位ビットの場合です。
次に、カウンターの数を確認する必要があります。
bitmasks:
0x0
0x1
0x2
etc を使用OR
して、現在のカウンター番号を確認することを考えました。
これらはすべて複雑すぎるようです。私は正しい軌道に乗っていますか?これらの操作は、Javaコーディングでどのように対処するのが最適ですか?
これに関する任意の入力、ガイダンスは大歓迎です。