二分查找也叫折半查找,是一种基本的查找算法,这种查找方法需要待查的表满足两个条件
1.有序
2.可以根据索引查找
3.有界
算法的基本思想是:
将查找表中间位置数据元素的关键字与给定关键字比较,如果相等则查找成功;
否则利用中间元素将表一分为二,如果中间关键字大于给定关键字,则在前一子表中进行折半查找,否则在后一子表中进行折半查找。重复以上过程直到找到满足条件的元素,则查找成功;
或直到子表为空为止,此时查找不成功。
package com.wedoctor;
public class BinarySearch {
public static void main(String[] args) {
int arr[] = {-5,1,4,6,7,9,12,56};
System.out.println(binarySearch(arr, 12));
}
public static int binarySearch(int arr[],int value){
int left = 0;
int right = arr.length - 1 ;
while (left < right){
int mid = left + (right-left)/2;
if (arr[mid] == value){
return mid ;
} else if (arr[mid] > value){
right = right - 1;
}else {
left = left + 1;
}
}
return -1;
}
}