Skip to content

Commit 8fc535b

Browse files
committed
Added a Binary Search in Java
1 parent 845f946 commit 8fc535b

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
*
3+
* @author Dimitar Dimitrov
4+
*/
5+
public class BinarySearch {
6+
private Comparable[] a;
7+
8+
public BinarySearch(Comparable[] a) {
9+
this.a = a;
10+
}
11+
12+
public int getIndexOf(Comparable value) {
13+
return getIndexOf(value, 0, a.length - 1);
14+
}
15+
16+
// Running time - O(lg(n))
17+
// Space - O(1)
18+
private int getIndexOf(Comparable value, int min, int max) {
19+
if(max > min) {
20+
int mid = min + (max - min) / 2;
21+
if(value.compareTo(a[mid]) > 0) {
22+
return getIndexOf(value, mid + 1, max);
23+
}
24+
else if(value.compareTo(a[mid]) < 0) {
25+
return getIndexOf(value, min, mid);
26+
}
27+
else {
28+
return mid;
29+
}
30+
}
31+
return -1;
32+
}
33+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import java.util.Arrays;
2+
3+
/**
4+
*
5+
* @author Dimitar Dimitrov
6+
*/
7+
public class Simulate {
8+
public static void main(String[] args) {
9+
Integer[] numbers = new Integer[] { 1, 3, 7, 12, 15, 35, 77, 101, 179, 351 };
10+
BinarySearch binarySearch = new BinarySearch(numbers);
11+
int i = binarySearch.getIndexOf(77);
12+
13+
System.out.println("The Data is:");
14+
System.out.println(Arrays.toString(numbers));
15+
System.out.println("Searching for the value 77");
16+
System.out.println(String.format("The index is: %s", i));
17+
}
18+
19+
/*
20+
* The Data is:
21+
* [1, 3, 7, 12, 15, 35, 77, 101, 179, 351]
22+
* Searching for 77
23+
* The index is: 6
24+
*/
25+
}

0 commit comments

Comments
 (0)