二分查找

2020-12-16 11:54:45 浏览数 (1)

今日刷题:
任务描述

题目描述:将n个从小到大排序的整数(n<1000000)从1~n进行编号,并一个待查找的整数m,请使用二分法进行查找。

相关知识(略)
编程要求

根据提示,在右侧编辑器Begin-End处补充代码。

输入

输入包括3行,第一行为整数n,第二行包括n个整数,以空格分隔,第三行为整数m

输出

如果能够在序列中找到整数m,则输出编号(如果存在多个编号,返回编号最小的),如果不存在,则输出None

测试说明

样例输入:

10

1 2 4 5 6 7 8 9 10 11

10

样例输出:

9

源代码如下:

代码语言:javascript复制
#include<stdio.h>
#define m 1000000
int main(void)
{
int a[m],n,b;
    scanf("%d",&b);
    for(n=0;n<b;n  ){
        scanf("%d",&a[n]);
    }
    int find;
    scanf("%d",&find);
  if(b==1){
    if(find==a[0]){
      printf("%d",1);
    }

  }
    for(n=0;n<(b/2);n  ) {
        if (find == a[n]) {
            printf("%d", n   1);
            break;
        }
    }
if(find!=a[n]) {
    for (n = (b / 2); n < b; n  ) {
        if (find == a[n]) {
            printf("%d", n   1);
            break;
        }
    }
}
if(find!=a[n]){
  printf("None");
}
return 0;
}

运行结果如下:

0 人点赞