每天一点算法-查找算法-二分查找

二分查找,又称为折半查找,前提条件为集合为有序

举个例子我手里攥了一把钱,告诉你在一千块以内,你来猜具体多少钱,我将根据你猜的书给予提示猜大了还是猜小了或者猜对了,一般基本上不会从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 {

 //找到了

}

猜你喜欢

转载自www.cnblogs.com/hpzhu/p/11111045.html