zoukankan      html  css  js  c++  java
  • 二分查找

    Description

    二分查找又叫折半查找。它采用的是"分治策略"。给出从小到大排好序的M个整数,查找是否存在某个整数,如果存在,则输出其位置。

    Input

    第一行是一个整数 M ( 0 < M ≤ 200000 ) 表示整数的个数。

    接下来是M个整数,每个整数之间用一个空格分隔。

    接下来一行是一个整数N,表示要查找的关键字个数。

    接下来N个整数,表示要查找的关键字key。每个key之间一个空格分隔。

    Output

    对每个要查找的key,输出一行结果。

    如果找到,输出key在这M个整数的位置,位置从0开始编号。

    如果找不到,则输出 Not Found

    Sample Input

    10
    1 2 4 6 7 8 9 11 20 85
    4
    1 5 20 99

    Sample Output

    0
    Not Found
    8
    Not Found

     
    #include<stdio.h>
    int binary_search(int key,int len,int a[]){
        int l=0,r=len-1;
        while(l<=r){
            int middle = (r-l)/2+l;
            if(a[middle]==key)
                return middle;
            else if(a[middle]>key){
                r = middle - 1;
            }
            else l = middle +1;
        }
        return -1;
    }
    int main(){
        int a[200002];
        int M,N,key;
        scanf("%d",&M);
        int i,j;
        for(i=0;i<M;i++){
            scanf("%d",&a[i]);
        }
        //要查找的关键字个数
        scanf("%d",&N);
        for(j = 0;j<N;j++){
            //要查找的关键字
            scanf("%d",&key);
            int k = binary_search(key,M,a);
            if(k==-1)
            {
                printf("Not Found
    ");
            }
            else{
                printf("%d
    ",k);
            }
        }
        return 0;
    
    }
  • 相关阅读:
    mybatis(1.2)
    Could not find resource mybatis.xml 找不到mybatis主配置文件的三种解决方式
    mybatis(1)
    linux笔记(一)
    javaScript(笔记1)
    过滤器 防止用户恶意登陆
    用户注册调优 及Connection对象
    请求转发的实现及其优缺点
    重定向的实现及其优缺点
    http状态码
  • 原文地址:https://www.cnblogs.com/dichuan/p/8191193.html
Copyright © 2011-2022 走看看