二分查找

二分查找(折半查找)条件:待查找表为顺序存储结构的有序表.



折半查找过程是以处以区间中间位置记录的关键字和给定值比较,若相等,则查找成功,若不等,则缩小范围,直至新的区间中间位置记录的关键字等于给定值或者查找区间的大小小于零时(表明查找不成功)为止.



算法实现:

<span style="font-size:18px;"><strong><strong>int binarysearch(int array[],int low,int high,int key)
{
while(low<=high)
{
int mid=(low+high)/2;
if(array[mid]>key)
high=mid-1;
else if(array[mid]<key)
low=mid+1;
else//find
return mid;
}
//not find
return-1;
}</strong></strong></span>
递归实现:

<strong><span style="font-size:18px;"><strong>int binary_search(int arr[],int low,int high,int key)

{
int mid=low+(high-low)/2;
if(low>high)
return-1;
else{
if(arr[mid]==key)
return mid;
elseif(arr[mid]>key)
return binary_search(arr,low,mid-1,key);
else
return binary_search(arr,mid+1,high,key);
}
}</strong></span></strong>

二分查找性能:

当有序表长度较大(n>50)时,可以认为ASL=log2(n+1) - 1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值