43 lines
1.4 KiB
Java
43 lines
1.4 KiB
Java
import java.util.Arrays;
|
|
|
|
public class BinarySearch {
|
|
public static void main(String[] args) {
|
|
int[] seriesofNumbers = { 12, 14, 16, 17, 85, 5, 42, 23, 54, 96, 56, 45, 43, 32, 99, 33, 6, 77, 66, 98, 56, 43, 21,
|
|
22 };
|
|
|
|
System.err.println(BinarySearchDo(seriesofNumbers, 33));
|
|
}
|
|
|
|
public static int BinarySearchDo(int[] sortedNumbers, int wantedNumber) {
|
|
// let's set the first and last indecies of the array
|
|
int left = 0;
|
|
int right = sortedNumbers.length - 1;
|
|
// we sort the array just in case it is a series of random numbers
|
|
Arrays.sort(sortedNumbers);
|
|
for (int sortedNum : sortedNumbers) {
|
|
System.out.print(sortedNum + " ");
|
|
}
|
|
System.out.println("");
|
|
// let's split the array into 2 and compare if the middle number is lower or
|
|
// larger than the wanted number
|
|
while (left <= right) {
|
|
int middleIndex = (left + right) / 2;
|
|
int middleNumber = sortedNumbers[middleIndex];
|
|
System.out.println("The last index of this Array is " + right + " and the Middile index is " + middleIndex
|
|
+ " ==> " + middleNumber);
|
|
System.out.println("");
|
|
if (wantedNumber == middleNumber) {
|
|
System.out.println("");
|
|
return middleIndex;
|
|
}
|
|
if (wantedNumber < middleNumber) {
|
|
right = middleIndex - 1;
|
|
}
|
|
if (wantedNumber > middleNumber) {
|
|
left = middleIndex + 1;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
}
|