首页 > 代码库 > C++ 二分查找 求最近的值
C++ 二分查找 求最近的值
上代码:
<span style="font-size:18px;"> #include <iostream> #include <math.h> using namespace std; int BinarySearch(float *array, int aSize, float key) { if ( array == NULL || aSize == 0 ) return -1; int low = 0; int high = aSize - 1; int mid = 0; int minIndex=0; int gap=abs(array[mid]-key); while ( low <= high ) { mid = (low + high )/2; if(gap>abs(array[mid]-key)) { gap=abs(array[mid]-key); minIndex=mid; } if ( array[mid] < key) { low = mid + 1; } else if ( array[mid] > key ) { high = mid - 1; } else { return (minIndex-1); } } } int main() { float array[6]={1.02,2.03,3.06,8.49,12.63,88.47}; for(int i=0;i<sizeof(array)/sizeof(float);i++) cout<<array[i]<<" "; cout<<endl; cout<<"No recursive:"<<endl; cout<<"position:"<<BinarySearch(array, 4, 12.90)<<endl; system("pause"); return 0; } </span>
运行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。