1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <ctime>
 4 const int N=100;
 5 int n=50,step;
 6 int in[N];
 7 void binsort()
 8 {
 9     int l,r,id;
10     for (int i=1;i<n;i++)
11     {
12         l=0;r=i-1;int temp=in[i];
13         while (l<=r)
14         {
15             int mid=(l+r)/2;
16             if (temp<in[mid])
17             {
18                 r=mid-1;
19             }
20             else
21             {
22                 l=mid+1;
23             }
24         }
25         for (int j=i-1;j>=l;j--)
26         {
27             in[j+1]=in[j];
28         }
29         in[l]=temp;
30     }
31 }
32 int binsearch(int want)
33 {
34     int l,r,mid;
35     l=0;r=n-1;
36     while (l<=r)
37     {
38         step++;
39         mid=(l+r)/2;
40         if (in[mid]==want)
41         {
42             return 1;
43         }
44         else if (in[mid]>want)
45         {
46             r=mid-1;
47         }
48         else
49         {
50             l=mid+1;
51         }
52     }
53     return 0;
54 }
55 int main()
56 {
57     srand(time(0));
58     for (int i=0;i<n;i++)
59     {
60         in[i]=rand()%100;
61         printf("%d ",in[i]);
62     }
63     printf("\n");
64     binsort();
65     for (int i=0;i<n;i++)
66     {
67         printf("%d ",in[i]);
68     }
69     printf("\n");
70     int ans,want;
71     step=0;
72     scanf("%d",&want);
73     ans=binsearch(want);
74     printf("%d step:%d\n",ans,step);//注意不能写成printf("%d step:%d\n",binsearch(want),step);!!! 
75 
76     return 0;
77 }