zcmu1508(二分查找)

题目链接:http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1508

【分析】就是二分法,构造一个函数实现

#include<bits/stdc++.h>
using namespace std;
int a[100010];
void find(int x,int n)
{
	int st=0,ed=n,mid;
	while(st<ed)
	{
		mid=(st+ed)/2;
		if(x==a[mid])
		{
			printf("%d found at %d\n",x,mid+1);
			return ;
		}	
		else if(x<a[mid])
			ed=mid;
		else if(x>a[mid])
			st=mid+1;
	}
	printf("%d not found\n",x);
}
int main()
{
	int n,m;
	memset(a,0,sizeof(a));
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(int i=0;i<m;i++)
	{
		int x;
		scanf("%d",&x);
		find(x,n);	
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38735931/article/details/81436360