-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBinarySearch.java
More file actions
28 lines (26 loc) · 863 Bytes
/
BinarySearch.java
File metadata and controls
28 lines (26 loc) · 863 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@SuppressWarnings("unchecked")
public class BinarySearch<T extends Comparable> {
// O(log n)
public int search(T[] array, T key) {
int i = 0;
int j = array.length - 1;
int mid = 0;
while (i <= j) {
mid = (i + j) / 2;
if (key.compareTo(array[mid]) == 0)
return mid;
if (key.compareTo(array[mid]) > 0)
i = mid + 1;
if (key.compareTo(array[mid]) < 0)
j = mid - 1;
}
return -1;
}
public static void main(String[] args) {
BinarySearch<Integer> binarySearch = new BinarySearch<>();
Integer[] array = new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Integer key = Integer.valueOf(args[0]);
int index = binarySearch.search(array, key);
System.out.println(index);
}
}