题解 | #查找#

查找

https://www.nowcoder.com/practice/d93db01c2ee44e8a9237d63842aca8aa

408必学二分查找
#include<iostream>
#include<algorithm>
using namespace std;

int arr1[100];
int arr2[100];

bool binarysearch(int n, int target)  //实现二分查找
{
	int left = 0;
	int right = n - 1;
	while(left <= right) 
	{
		int mid = (left + right) / 2;
		if (arr1[mid] < target)
		{
			left = mid + 1;

		}
		else if (target < arr1[mid]) 
		{
			right = mid - 1;
		}
		else return true;  //查找成功
	}
	return false;

}



int main() {
	int n, m;
	while (cin >> n) 
	{
		for (int i = 0; i < n; i++) {
			cin >> arr1[i];
		}
		cin >> m;
		for (int i = 0; i < m; i++) {
			cin >> arr2[i];
		}
		sort(arr1, arr1 + n);  //将数组排序
		for (int i = 0; i < m; i++) 
		{
			if (binarysearch(n, arr2[i]))
				cout << "YES" << endl;
			else
				cout << "NO" << endl;
		}
	}
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务