二分查找,又称为折半查找,前提条件为集合为有序
举个例子我手里攥了一把钱,告诉你在一千块以内,你来猜具体多少钱,我将根据你猜的书给予提示猜大了还是猜小了或者猜对了,一般基本上不会从1元猜起,如果是1000块,则需要猜1000次才会猜对,从中间数开始猜,500,大了还是小了,大了,就猜250,小了就猜750,二分查找就是每次都从中间开始猜起,一直到猜到或者整个集合猜完为止
一般情况下,比顺序查找效率高,用大O表示法表示:O(log n)
int [] array = {1,2,3,4,5,6,7,8,9,10} 查找7
int mid = 0;
int high = array.length -1;
int start =0;
int param = 7;
for(int i = 0;i<high;i++) {
mid = (int)((start + high)/2);
if(param > array[mid]){
start = mid + 1;
} else if(param < array[mid]){
high = mid -1;
} else {
//找到了
}
}