using namespace std;
/*
输入两个数 n <= 100000 两个数字为m
思路 一个数字为a[i] 则在数组中查找出m - a[i]是否存在
*/
bool findansewer(int a[], int now,int m){
int L = 0;
int R = sizeof(a) / sizeof(int) - 1;
bool isFalg = false;
int index ;
//为了出现找到now的下标
for(int i = 0; i < R + 1 ; i++){
if(a[i] == now)
index = i;
}
while(L <= R){
int mid = L + (R - L) / 2;
if((m - a[mid] == now) && mid != index){
isFalg = true;
break;
}
else if( m - a[mid] > now)
R = mid - 1;
else
L = mid + 1;
}
return isFalg;
}
int main(){
int now = 0,m=0;
scanf("%d %d",&now,&m);
int a[] = {1,2,3,4,5,6,7,8,9,10};
printf("%d",findanswer(a,now,m));
return 0;
}
折半查找c++
最新推荐文章于 2022-11-26 12:01:05 发布