首页 > 其他 > 详细

二分查找

时间:2015-04-06 17:10:02      阅读:241      评论:0      收藏:0      [点我收藏+]
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 
 5 int main()
 6 {
 7     int a[10000],n,m,i,j,k,low,high,mid,flag;
 8     scanf("%d",&n);
 9     for(i=0; i<n; i++)
10         scanf("%d",&a[i]);
11     scanf("%d",&m);
12     j=0;
13     while(j<m)
14     {
15         low=0,high=n-1,flag=0;
16         scanf("%d",&k);
17         while(low<high&&flag==0)
18         {
19             if(high-low==1)
20             {
21                 if(k==a[low])
22                 {
23                     flag=1;
24                 }
25                 else if(k==a[high])
26                 {
27                     flag=1;
28                 }
29                 else
30                 {
31                     flag=2;
32                 }
33             }
34             else
35             {
36                 mid=(high+low)/2;
37                 if(k==a[mid])
38                 {
39                     flag=1;
40                 }
41                 else if(k<a[mid])
42                 {
43                     high=mid;
44                 }
45                 else if(k>a[mid])
46                 {
47                     low=mid;
48                 }
49             }
50         }
51         if(flag==1)
52             printf("Yes\n");
53         if(flag==2)
54             printf("No\n");
55         j++;
56     }
57     return 0;
58 }

 

二分查找

原文:http://www.cnblogs.com/zhouyee/p/4396081.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!