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;
    
    }
  • 相关阅读:
    编程及应用中的一些快捷键(持续更新中)
    html5入门(head部分的基本认识)
    html5入门(j简单了解html)
    动态规划 ship
    js 解决两值交换
    styled-components解决全局样式'injectGlobal' 废除的问题
    mysql sql更新密码失败
    window nginx 基础命令
    MySQL 8.0
    "unexpected console statement” in Node.js
  • 原文地址:https://www.cnblogs.com/dichuan/p/8191193.html
Copyright © 2011-2022 走看看