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

[数据结构]二分查找

2014-04-19 15:48 309 查看
1,二分查找:

点击打开链接

int Find(int arr[], int key,int length)
{
assert(arr!=NULL&&length>0);
int low=0,high=length,mid;
while(low<=high)
{
mid=(low+high)/2;
if(arr[mid]==key) return mid;
else
{
if(arr[mid]>key) high=mid-1;
else low=mid+1;
}
}
return-1;
}


假定集合中油重复的元素,找到某个数首次出现的位置

int find(int * arr , int length, int key){
int low = 0,high = length-1,mid;
while(low <= high){
mid = (low + high)/2;
if (arr[mid] < key){
low = mid + 1;
}else if(arr[mid] > key){
high = mid - 1;
}else{
if (mid == 0) return mid;
if (mid >= 1 && arr[mid-1] != key) return mid;
else high = mid - 1;
}
}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: