首页 > 其他 > 详细

2872=M--二分查找

时间:2019-04-02 22:39:42      阅读:342      评论:0      收藏:0      [点我收藏+]
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 int a[3000000];
 5 int find(int q,int left,int right)
 6 {
 7     int x,y;
 8     x=left;
 9     y=right;
10     int mid;
11     mid=(x+y)/2;
12     if(q==a[mid])
13     {
14         return mid;
15     }
16     if(x>=y)return -1;//和之前的的二分查找一样,但是某些条件及范围不一样,注意题目要求即可。
17     if(q<a[mid])return find(q,x,mid-1);
18     else  return find(q,mid+1,y);
19 
20 }
21 int main()
22 {
23     int n,m;
24     scanf("%d",&n);
25     int i;
26     for(i=0; i<n; i++)
27     {
28         scanf("%d",&a[i]);
29     }
30     int b;
31     scanf("%d",&m);
32     for(i=0; i<m; i++)
33     {
34         scanf("%d",&b);
35         if(find(b,0,n-1)!=-1)
36         printf("%d\n",find(b,0,n-1)+1);
37         else printf("-1\n");
38     }
39     return 0;
40 }

 

2872=M--二分查找

原文:https://www.cnblogs.com/Angfe/p/10645801.html

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