您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法之二分查找

2016-04-01 12:06 513 查看
概念

二分查找又称折半查找,它是一种效率较高的查找方法。它的时间复杂度为O(logn)

二分查找要求:有序的线性表

基本思想

二分查找的基本思想是划分当前查找区间,区间的范围一步一步的缩小,如果找到直接返回,反之直到区间只有一个元素时停止

实现

设R为一个值递增的有序线性表

实现步骤:

首先确定该区间的中点位置:mid=[(low+high)/2]

然后将key值与R[mid]的值比较:若相等,则直接返回当前mid,否则进行确定新的区间操作,这分为两种情况

①R[mid]>key则表明key在区间的左边,所以low不变,high=mid-1

②R[mid]<key则表明key在区间的右边,所以high不变,low=mid+1

如果没有找到则返回-1

代码实现:

public int BinSearch(int[] array, int key)
{
int low = 0, high = array.Length - 1, mid;

while (low <= high)
{
mid = (low + high) / 2;
int curValue = array[mid];

if (curValue == key)
return mid;

if (curValue > key)
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}

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