我們存儲在字節數組爲比特知識。計數設置位數很慢。提高算法任何建議,歡迎:改進算法的:在計數設置位字節數組
public static int countSetBits(byte[] array) {
int setBits = 0;
if (array != null) {
for (int byteIndex = 0; byteIndex < array.length; byteIndex++) {
for (int bitIndex = 0; bitIndex < 7; bitIndex++) {
if (getBit(bitIndex, array[byteIndex])) {
setBits++;
}
}
}
}
return setBits;
}
public static boolean getBit(int index, final byte b) {
byte t = setBit(index, (byte) 0);
return (b & t) > 0;
}
public static byte setBit(int index, final byte b) {
return (byte) ((1 << index) | b);
}
要計算的156'564長度的字節數組的比特需要300毫秒,這太過分了!
你可以分享'getBit'方法嗎? – Apurv 2013-02-15 12:18:40
我不知道這是否適用於您的問題,但也許您可以單獨維護計數。 – 2013-02-15 12:18:54
請分享'getBit'功能 – TheBronx 2013-02-15 12:29:11