codeChallenge/BinarySearch/BinarySearch.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;
}
}