您的位置:首页 > 其它

算法系列:二分搜索算法

2012-06-30 19:59 225 查看
二分搜索算法是运用分治策略的典型例子,适用于从已经排序好的n个元素中找出某一特定元素x,注意前提是该数组是已经排序了的。

二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较,如果x=a[n/2],则找到x,算法介绍;如果x<a[n/2],则只需要在数组a的左半部分继续搜索;如果x>a[n/2],则只要在数组a的有半部分继续搜索。在最坏的情况下,二分搜索算法需要用O(logn)的时间(这个不是很懂,望某些人可以解答一下)。

具体算法描述:(C++版)

template< class Type >
int BinarySerarch(Type a[], const Type& x, int n)
{
int left = 0;
int right = n - 1;
while (left <= right)
{
int middle = (left + right)/2;
if(x == a[middle])
return middle;
if(x > a[middle])
left = middle + 1;
else
right = middle - 1;
}
return -1;  //未找到x
}


本算法比较容易理解,我就不多说了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: