lots of exercises in java... from https://github.com/exercism/java

BinarySearch.java 850B

12345678910111213141516171819202122232425262728293031323334353637
  1. import java.util.List;
  2. class BinarySearch<T extends Comparable<T>> {
  3. private List<T> array;
  4. private int arraySize;
  5. BinarySearch(List<T> array) {
  6. this.array = array;
  7. this.arraySize = array.size();
  8. }
  9. int indexOf(T value) {
  10. return search(value);
  11. }
  12. private int search(T value) {
  13. int left = 0;
  14. int right = this.arraySize - 1;
  15. int middle;
  16. T element;
  17. while (left <= right) {
  18. middle = (int) Math.floor(0.5 * (left + right));
  19. element = this.array.get(middle);
  20. if (value.compareTo(element) > 0) {
  21. left = middle + 1;
  22. } else if (value.compareTo(element) < 0) {
  23. right = middle - 1;
  24. } else {
  25. return middle;
  26. }
  27. }
  28. return -1;
  29. }
  30. }