#include<cstdio>
#include<cstring>
using namespace std;
int n,m;//n个数,m次查询;
int a[10];//升序数组
int Binary_search_max(int x)
{
int l=1,r=n,mid;
int ans;
while(r-l>1)
{
int mid=(r+l)/2;
if(a[mid]>=x)
{
ans=mid;
r=mid;
}
else
{
l=mid+1;
}
}
return ans;
}
int Binary_search_min(int x)
{
int l=1,r=n,mid,ans;
while(r-l>1)
{
int mid=(r+l)/2;
if(a[mid]<=x)
{
ans=mid;
l=mid;
}
else
{
r=mid-1;
}
}
return ans;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
int x;
for(int i=1; i<=m; i++)
{
scanf("%d",&x);
if(x>a[n])
{
printf("不存在比x大的数组元素\n");
printf("比x小的最大数组元素的下标是%d\n",n-1);
}
else if(x<a[1])
{
printf("不存在比x小的数组元素\n");
printf("比x大的最小数组元素的下标是%d\n",0);
}
else
{
int pos1=Binary_search_max(x);
int pos2=Binary_search_min(x);
//printf("%d %d\n",pos1,pos2);
if(a[pos1]==x)
{
printf("与x相等的数据元素的下标是%d\n",pos1-1);
}
if(a[pos1]>x)
{
printf("比x大的最小数组元素的下标是%d\n",pos1-1);
}
if(a[pos2]<x)
{
printf("比x小的最大数组元素的下标是%d\n",pos2-1);
}
}
}
}
return 0;
}
/*9
7 4
2 3 4 5 6 8 9
*/
实验报告(暂存)
最新推荐文章于 2022-06-12 21:31:23 发布