题解 | #查找#
查找
https://www.nowcoder.com/practice/d93db01c2ee44e8a9237d63842aca8aa
#include <stdio.h> #include <stdlib.h> int cmp(const void*a,const void*b){ return *(int *)a>*(int *)b; } int main() { int n; while (scanf("%d", &n) != EOF) { int arr[n]; for(int i=0;i<n;++i){ scanf("%d",&arr[i]); } qsort(arr, n,sizeof(int),cmp); int m; scanf("%d", &m); while(m--){ int x; scanf("%d", &x); int left=0,right=n-1,flag=0; while (left<=right) { int middle=(left+right)/2; if(arr[middle]<x){ left=middle+1; } else if(arr[middle]>x){ right=middle-1; } else{ printf("%s\n","YES"); flag=1; break;//这句很重要 } } if(flag==0) printf("%s\n","NO"); } } return 0; }#C#