#include<iostream> #include<algorithm> using namespace std; //排序后二分查找 //更为高效的查找方式再数据结构章节的散列表部分介绍 const int maxN = 105; int target[maxN]; //find是关键字不能用 int n; int m; //注意数组不需要引用传参,直接传参就是指针;形参int arr int arr[] int arr[][]本质上都是一个指针,只是形式差别 //数组有值传递吗? int bFind(int arr[], int x) { //其实arr如果是全局变量就不用传参; int l = 0, h = n - 1; while (l <= h) { //注意这里的等号,不取等号的话就不对 int m = (l + h) / 2; if (arr[m] == x) { return 1; } else if (arr[m] < x) { l = m + 1; } else { h = m - 1; } } return 0; } int main() { int arr[105]; while (cin >> n) { for (int i = 0; i < n; i++) { cin >> arr[i]; } sort(arr, arr + n); cin >> m; for (int i = 0; i < m; i++) { cin >> target[i]; } for (int i = 0; i < m; i++) { if (bFind(arr, target[i])) { printf("YES\n"); } else { printf("NO\n"); } } } return 0; }
注意find是关键字不能用作标识符(变量名、函数名)
数组传参直接就是指针传参;
数组有值传递吗???