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

BinarySearch.java 932B

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