class BinarySearch {
public static int binarySearch(int[] array, int target){
int l = 0, r = array.length - 1; // 在[l...r]的范围里寻找target
while (l<=r) { // 当 l == r 时,区间[l,r] 依然是有效的
int mid = (l + r) / 2;
// int mid = l + ( r - 1 ) / 2; // 避免整型溢出
if(array[mid] == target){ // 当 array[mid] == target 时,target == l == r
return mid;
}
if(array[mid] < target){ // array[mid] < target,target 在 array[mid] 右边
l = mid + 1;
}
if(array[mid] > target){ // array[mid] > target,target 在 array[mid] 左边
r = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7,8,9};
System.out.println(binarySearch(array,9));
}
}
【Java】二分搜索
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 特点:被搜索序列有序;可以随机访问 二分查找一般由三个主要部分组成:预处理 —— 如果集合未排序,则进行排序。二分...
- 1、搜索都是建立在排好序的序列之上再搜索。(1)二分法搜索拿中间的数和要搜索的数比较。(2)排序的顺序要求是升序。...
- 学习了正面管教之后,我们一直在努力致力于改善! 今天下班回到家,老公和我讲起今天接女儿放学时发生的一件事情: 女儿...