您的位置:首页 > 其它

有序数组中的二分查找

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;

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: