[数据结构]二分查找
2015-01-20 20:01
239 查看
1,二分查找:
点击打开链接
[cpp] view plaincopy
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;
}
假定集合中油重复的元素,找到某个数首次出现的位置
[cpp] view plaincopy
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;
}
点击打开链接
[cpp] view plaincopy
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;
}
假定集合中油重复的元素,找到某个数首次出现的位置
[cpp] view plaincopy
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;
}
相关文章推荐
- 数据结构:二分查找的递归与非递归实现--C实现
- 【数据结构与算法】【查找】折半查找(二分查找)的代码实现
- SDUT 数据结构实验之查找四:二分查找
- 数据结构实验之查找四:二分查找
- 数据结构实验之查找四:二分查找
- [数据结构]二分查找
- 【数据结构与算法之查找算法二】二分查找
- 数据结构基础(2) --顺序查找 & 二分查找
- 数据结构实验之查找四:二分查找
- 数据结构实验之查找四:二分查找
- 数据结构和算法设计专题之---二分查找(Java版)
- 数据结构查找-二分查找
- 数据结构基础(2) --顺序查找 & 二分查找
- C 数据结构与算法 二分查找
- 数据结构与算法-折半查找(二分查找)
- 【数据结构与算法】二分查找
- 数据结构基础(2) --顺序查找 & 二分查找
- 看数据结构写代码(53) 静态查找表(线性查找,二分查找,斐波那契查找,插值查找)
- 【数据结构】折半查找(二分查找)
- SDUT 3376 数据结构实验之查找四:二分查找