我正在尝试编写一个执行二进制搜索的函数,但是该函数给出了模糊的引用。我正在使用递归排名函数来执行二进制搜索并对数组中的数字进行排名
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int rank(int arr[],int low,int high,int key)
{
while(low<high){
int mid=low+(high-low)/2;
if(arr[mid]>key){
return rank(arr,low,mid-1,key);
}
if(arr[mid<key]){
return rank(arr,mid+1,high,key);
}
if(arr[mid]==key){
return mid+1;
}
return -1;
}
}
int main() {
int num,q;
cin >> num; // Reading input from STDIN
int a[num];
for(int i=0;i<num;i++){
cin>>a[i];
}
sort(a,a+num);
cin>>q;
for(int i=0;i<q;i++){
int n,r;
cin>>n;
r=rank(a,0,num-1,n);
cout<<r<<endl;
}
}