求助
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/12 14:40
  • 上次更新2024/8/12 14:44:07
查看原帖
求助
973480
封禁用户楼主2024/8/12 14:40

我在发明查找算法,可是要是如果没有这个数会超时

#include<bits/stdc++.h>
using namespace std;
int n,a[11],q;
int f(int a[],int n,int target){
    int l=1,r=n;
    while(l<=r){
        int mid=(l+r)/2;
        int mid1=(mid+l)/2,mid2=(mid+r)/2;
        if(a[mid1]==target) return mid1;
        if(a[mid2]==target) return mid2;
        if(target>a[mid1]&&target<a[mid2]){
            l=mid1+1;
            r=mid2-1;
        }else if(target<a[mid1]){
            l=1;
            r=mid1-1;
        }else{
            l=mid2+1;
            r=n;
        }
    }
    return -1;
}
int main(){
    cin >> n;
    for(int i=1;i<=n;i++) cin >> a[i];
    cin >> q;
    while(q--){
        int x;
        cin >> x;
        cout << f(a,n,x) << endl;
    }
    return 0;
}
2024/8/12 14:40
加载中...