您的位置:首页 > 其它

二分查找

2014-06-04 18:01 169 查看
二分查找又称折半查找

假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;

否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前

一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在

为止,此时查找不成功。



优点是比较次数少,查找速度快,平均性能好;

缺点是要求待查表为有序表,且插入删除困难。

int BinSearch( int arr
, int key)

{

int high,low,mid;

high=n-1;

low =0;

mid = n-1/2;

if(key ==arr[high])

return arr[high];

if(key ==arr[low])

return arr[low];

while(high>=low){

if(arr[mid]>key){

low=mid;

//mid= (high+low)/2;可能会溢出

mid=(high-low)/2 +low

}else if( arr[mid]<key){

high=mid;

mid = (high-low)/2;

}else{

return arr[mid];

}

return -1;

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