码迷,mamicode.com
首页 > 编程语言 > 详细

二分插入排序+二分搜索

时间:2019-01-04 20:28:11      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:col   search   二分插入   scanf   for   arc   bsp   cst   binsearch   

 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 }

 

二分插入排序+二分搜索

标签:col   search   二分插入   scanf   for   arc   bsp   cst   binsearch   

原文地址:https://www.cnblogs.com/hemeiwolong/p/10222102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!