introduce bitloops
This commit is contained in:
@@ -161,6 +161,37 @@ public class SwedishGeneratorTest {
|
||||
assertTrue(Slot.horiz(2)); // right
|
||||
assertFalse(Slot.horiz(3)); // down
|
||||
}
|
||||
static int intersectSorted(int[] a, int aLen, int[] b, int bLen, int[] out) {
|
||||
if (aLen == 0 || bLen == 0) return 0;
|
||||
if (aLen < bLen >>> 4) {
|
||||
int k = 0;
|
||||
for (int i = 0; i < aLen; i++) {
|
||||
int x = a[i];
|
||||
if (Arrays.binarySearch(b, 0, bLen, x) >= 0) out[k++] = x;
|
||||
}
|
||||
return k;
|
||||
}
|
||||
if (bLen < aLen >>> 4) {
|
||||
int k = 0;
|
||||
for (int i = 0; i < bLen; i++) {
|
||||
int y = b[i];
|
||||
if (Arrays.binarySearch(a, 0, aLen, y) >= 0) out[k++] = y;
|
||||
}
|
||||
return k;
|
||||
}
|
||||
int i = 0, j = 0, k = 0, x, y;
|
||||
while (i < aLen && j < bLen) {
|
||||
x = a[i];
|
||||
y = b[j];
|
||||
if (x == y) {
|
||||
out[k++] = x;
|
||||
i++;
|
||||
j++;
|
||||
} else if (x < y) i++;
|
||||
else j++;
|
||||
}
|
||||
return k;
|
||||
}
|
||||
|
||||
@Test
|
||||
void testIntersectSorted() {
|
||||
|
||||
Reference in New Issue
Block a user