Skip to content

Instantly share code, notes, and snippets.

@disktnk
Created April 17, 2014 00:42
Show Gist options
  • Save disktnk/10945313 to your computer and use it in GitHub Desktop.
Save disktnk/10945313 to your computer and use it in GitHub Desktop.
Arrays#binarySearch で値が見つからなかった場合のマイナス値をビット反転することで、挿入位置が分かる。
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import java.util.Arrays;
import org.junit.Test;
/**
* ArraysBinarySearchTest
*/
public class ArraysBinarySearchTest {
@Test
public void binarySearch() {
double[] da = new double[] { 1.0, 2.0, 3.0 };
int a1 = Arrays.binarySearch(da, 0.5);
int a2 = Arrays.binarySearch(da, 1.0);
int a3 = Arrays.binarySearch(da, 1.5);
int a4 = Arrays.binarySearch(da, 2.0);
int a5 = Arrays.binarySearch(da, 2.5);
int a6 = Arrays.binarySearch(da, 3.0);
int a7 = Arrays.binarySearch(da, 3.5);
assertThat(a1, is(-1));
assertThat(a2, is(0));
assertThat(a3, is(-2));
assertThat(a4, is(1));
assertThat(a5, is(-3));
assertThat(a6, is(2));
assertThat(a7, is(-4));
assertThat(~a1, is(0));
assertThat(~a3, is(1));
assertThat(~a5, is(2));
assertThat(~a7, is(3));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment