二分查找是一种算法,其输入是一个有序的元素列表,使用二分查找时,每次都会排除一半的数字。
在以下1~100的列表里查找57,首先会猜测中间数字50是否符合,发现小了,就从50~100的列表里再次猜测并判断。
一般而言,对于包含n个元素的列表,用二分查找最多需要步,而简单查找最多需要n步。
以下是二分查找简单示例。
package algorithm;
public class BinarySearch {
public static void main(String[] args){
System.out.println("二分查找练习");
int[] arr={1,2,4,6,7,8,12,23,24,35,56};
Integer result= bianrySearch(arr,4);
System.out.println(result);
}
private static Integer bianrySearch(int [] arr,int item){
int low = 0;
int high = arr.length-1;
while (low <=high ){
int mid = (low+high)/2;
int guess = arr[mid];
if(guess == item){
return mid;
}
else if (guess > item){
high = mid-1;
}
else
low = mid+1;
}
return null;
}
}