最开始学习编程的二分法完成猜数游戏
#include<bits/stdc++.h>
using namespace std;
int a[105];
bool check(int x,int mid){ //二分中的检查函数
return x <= a[mid]; //如果x小于等于中间数,返回true
}
int bin_search(int n, int x){ //在数组a中找数字x,返回位置
int L = 1, R = n; //初始范围[L, R]
while (L < R) {
int mid = (L+R)/2;
if (check(x,mid)) R = mid; //答案在左半部分:[L,mid]
else L = mid+1; //答案在右半部分:[mid+1, R]
}
return a[L]; //返回答案
}
int main(){
int n = 100;
for(int i=1;i<=n;i++) a[i]=i; //赋值,数字1~100
int x = 29; //猜29这个数
cout<<"x="<<bin_search(n,x);
}