| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
-
- import java.util.List;
-
- public class BinarySearch<T extends Comparable<T>> {
-
- private List<T> array;
- private int arraySize;
-
- public BinarySearch(List<T> array) {
- this.array = array;
- this.arraySize = array.size();
- }
-
- public int indexOf(T value) {
- return search(value);
- }
-
- public List<T> getArray() {
- return array;
- }
-
- private int search(T value) {
- int left = 0;
- int right = this.arraySize - 1;
- int middle;
- T element;
- while (left <= right) {
- middle = (int) Math.floor(0.5 * (left + right));
- element = this.array.get(middle);
- if (value.compareTo(element) > 0) {
- left = middle + 1;
- } else if (value.compareTo(element) < 0) {
- right = middle - 1;
- } else {
- return middle;
- }
- }
- return -1;
- }
- }
|