#include <stdio.h> #include <string.h> #define maxn 1000100 int a[maxn]; int mid_find(int low,int high,int key) {int mid=(high+low)/2; //从中间取值while(low<=high){mid=(high+low)/2;if(key==a[mid]) //将关键字符与中位数作对比,相等,返回中位数的位置{return mid;}else if(key>a[mid]){low = mid+1; //覆盖左边第一个最小值}else{high=mid-1; //覆盖右边最大值}}return -1; } int main() {int m,n,i,j,p;while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++){ scanf("%d",&a[i]);} scanf("%d",&j);p = mid_find(0,n-1,j);if(p==-1){printf("NO\n",p);}else{printf("YES\n",p);}}return 0; }
转载于:https://www.cnblogs.com/CCCrunner/p/6444624.html
相关资源:JAVA上百实例源码以及开源项目