Ich lese über einige Probleme, die über Optimierungsansätze sind.
In dem Problem, wie Sie Zahlen in einem bestimmten Bereich sortieren, besteht die Lösung darin, eine Bitmap zu verwenden. Und wenn eine Nummer z.B. Verwenden Sie bis zu 10 Mal halbe Bytes zum Abbilden der Zahlen und als Zähler die Anzahl der Vorkommen.
Das Konzept verstehe ich gut. Mein Problem ist es, dies in Java auf einfache Weise zu implementieren.Was ist der beste Weg, Java-Codierung für diese Art von Byte-Level-Operationen zu tun?
Ich bin auf Bit-Operationen fest.
Zum Beispiel für den ersten Teil von 1 die Zähler zu erhöhen, was könnte ich darüber nachdenken, war:
Suchen Sie die Byte
Z.B. bitValue[i]
Dann tun byte tmp = bitValue[i] & 0x0F
, um die unteren Bits zu erhalten (wenn der Zähler der niedrige Zähler ist).
Dann tmp = tmp + 1
um 1 inkrementieren.
Dann tun bitValue[i] >> 2
, um Low-End-Bits zu löschen und dann bitValue[i] <<2
wiederherzustellen. Jetzt haben wir die gleichen hohen Bits wie die ursprünglichen und die niedrigen Bits.
Dann bitValue[i] |= tmp
setzen, um niedrige Bits zu setzen.
Jetzt bitValue
hat der Low-Bit-Zähler um 1 inkrementiert. Richtig?
Für das obere Bit wäre es der gleiche Prozess, aber für die oberen Bits.
Dann wenn ich überprüfen muss, wie ist die Nummer des Zählers.
Ich dachte Bitmasken verwenden:
0x0
0x1
0x2
etc und verwenden OR
zu überprüfen, was der aktuelle Zählernummer ist.
All diese scheinen zu kompliziert zu sein. Bin ich auf dem richtigen Weg? Wie werden diese Operationen am besten in der Java-Codierung angesprochen?
Jede Eingabe, Anleitung dazu ist sehr willkommen.
Sie studieren Optimierung oder Optimierung? Wenn Sie tatsächlich optimieren, haben Sie ein Leistungsproblem festgestellt oder gehen Sie davon aus, dass das, was Sie tun, notwendig ist? FWIW, es ist wahrscheinlich nicht notwendig. – Dave
@Dave: Ich studiere. – Cratylus