二分法查找数据前提:数组必须是有序数组
图示:
代码:
public class BinarySearchTest {
public int binarySearch(int[] arr,int value){
int middleA = 0;
int leftA = 0;
int rightA = arr.length - 1;
while (true) {
middleA = ((rightA + leftA) / 2);
if (arr[middleA] == value) {
return middleA;
}else if(leftA > rightA){
return -1;
}else {
if(arr[middleA] > value){
rightA = middleA - 1;
}else {
leftA = middleA + 1;
}
}
}
}
public static void main(String[] args) {
int[] arr = new int[]{1,3,4,6,8,9,10,38,50};
BinarySearchTest bst = new BinarySearchTest();
System.out.println(bst.binarySearch(arr,4));
}
}