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

[数据结构]二分查找

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;

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