您的位置:首页 > 其它

二分查找

2015-09-13 15:02 375 查看
二分查找是在有序表中查找某一数据用的比较频繁的算法。时间复杂度是O(logn)。

譬如在数组{1,2,3,4,5,6,7,8,9}中查找元素6,则使用二分查找算法的话,执行顺序为:

1 第一步查找中间元素,即是5,将6与5进行比较,得出5<6,则6必然在5之后的那一部分,那么就在这一部分开始寻找;

2 第二步查找{6,7,8,9}的中间元素,即是7,将6与7比较,得出7>6;则6必然在7左边的部分,则在这部分寻找;

3 第三步在{6}中寻找,一下就找到了。

代码如下,返回的是查到的元素在原数组中的位置。找不到返回-1。

int B_find(int a[],int length,int k)

{

if(k>=length)

return -1;

int low=0;

int high=length-1;

while(low<=high)

{

int mid=(low+high)/2;

if(a[mid]==k)

return mid;

else if(a[mid]>k)

high=mid-1;

else if(a[mid<k])

low=mid+1;

}

return -1;

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