二分查找

描述: T,表示T組數據
N,表示有數組長度爲N;
然後是N個數,表示N個數組
C,表示是C個查詢
然後C個num,表示查這個數,在第幾個位置

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 50010;
int num[maxn];
int Binserch(int n,int k)
{
    int low,mid,high;
    low=0;
    high=n-1;
    while(low<high)
    {
        mid=(low+high)/2;
        if(k==num[mid])
        {
            return (mid);
        }   
        if(num[mid]>k)
        {
            high=mid-1;
        }
        else low=mid+1;
    }
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,cas,fin,ans;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>num[i];    
        }
        cin>>cas;
        while(cas--)
        {
            cin>>fin;
            ans=Binserch(n,fin);
            cout<<ans+1<<endl;
        }   
    }   
    return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章