c_cpp 二进制数组搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 二进制数组搜索相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;

// #Searching #Theory
// Binary search works only for sorted arrays

int BinarySearch(vector<int> a, int l,int r, int x){
    if(l<=r){    // Base case: size>0 or l<=r (atleast 1 element to search)
        int m=l+((r-l)/2);  // mid index
        if(a[m]==x){
            return m;
        }else if(a[m]>x){
            return BinarySearch(a,l,m-1,x); // Search left 
        }else{
            return BinarySearch(a,m+1,r,x); // Search right
        }
    }
    return -1;  // if found no where return -1;
    
}

int main() {
	int t;
	cin>>t;
	while(t--){
	    int n;
	    cin>>n; // array size
	    vector<int> a(n);
	    for(int i=0;i<n;i++){
	        cin>>a[i];
	    }
	    int x;
	    cin>>x; // element to be searched
	    int i=BinarySearch(a,0,n-1,x);
	    if(i==-1){
	        cout<<x<<" not found in array"<<endl;
	    }else{
	        cout<<x<<" is found at index "<<i<<endl;
	    }
	}
	return 0;
}

以上是关于c_cpp 二进制数组搜索的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 二进制搜索

c_cpp 二进制搜索

c_cpp 二进制搜索

c_cpp 二进制搜索

c_cpp 二进制搜索模板

c_cpp 矩阵二进制搜索