有序数组中的二分查找
2012-07-29 13:11
218 查看
有序数组中的二分查找,简单理解的话,就相当于小时候玩过的一个小游戏:猜数。比如两个小朋友真真和飞飞玩猜数游戏。真真让飞飞猜1~50之间的那个数字17,当然飞飞事先不知道。飞飞就按二分查找这个比较快的方法来猜,他先猜25,然后真真提示说说偏大了;飞飞再猜13,真真又提示偏小了;飞飞再猜19,真真又提示说偏大了;飞飞于是猜16,真真提示说偏小了;飞飞再猜18,真真说偏大了。最后飞飞笑了笑,说出了正确的答案17。
这个游戏过程中飞飞总共猜了5次,这就是有序数组中二分查找的通俗理解。它可以快速地找到你要找到的数,因为每次猜数都可以帮你排除一半而缩小查找范围。
用java来实现可以用以下代码表示:
int[] a={0,1,2,3,4,5,6,7,8,9,10};
public int BinarySerach(int key){
int low=0;
int high=a.length-1;
while(true){
int mid=(low+high)/2;
if(a[mid]==key){
return mid;
}
if(low>high){
return a.length;
}
else {
if(a[mid]<key){
low=mid+1;
}
else{
high=mid-1;
}
}
}
}
这个游戏过程中飞飞总共猜了5次,这就是有序数组中二分查找的通俗理解。它可以快速地找到你要找到的数,因为每次猜数都可以帮你排除一半而缩小查找范围。
用java来实现可以用以下代码表示:
int[] a={0,1,2,3,4,5,6,7,8,9,10};
public int BinarySerach(int key){
int low=0;
int high=a.length-1;
while(true){
int mid=(low+high)/2;
if(a[mid]==key){
return mid;
}
if(low>high){
return a.length;
}
else {
if(a[mid]<key){
low=mid+1;
}
else{
high=mid-1;
}
}
}
}
相关文章推荐
- 二分搜索典型应用(一)从有序数组中查找某个值
- 从有序数组中查找某个值(二分)
- (二分查找思想)从有序递增旋转数组45679123 中找到数字6的位置
- 有序 循环数组的二分查找
- 在一个旋转过的有序数组上实现二分查找
- 继二分查找之后的有序数组的insert和delete操作
- 循环有序数组中的二分查找 Search in a rotated sorted array
- 有序表查询之一:java实现整型数组二分查找
- java数据结构与算法-有序数组二分查找
- 旋转有序数组的二分查找
- 二分查找思想寻找有序数组中查找最小值
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 有序数组的二分查找
- 153.leetcode Find Minimum in Rotated Sorted Array(medium)[有序数组 二分查找]
- 利用二分收索查找该数在该数组所在的位置,前提是要保证改数组是有序的
- 二分查找 基于有序数组 返回下标
- 【二分查找】用C语言实现一个有序数组的二分查找
- 有序数组的二分查找
- 算法—8.有序数组中的二分查找
- 二分查找有序数组中某个数的所在范围 Search for a Range