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;
    
    }
  • 相关阅读:
    jTopo——js库
    node.js
    php 入门笔记
    D3 入门笔记
    webpack笔记
    React.js
    Grunt等前端自动化构建工具
    vue3.0的新特性
    electron-builder 打包流程
    vue里面如何下载图片,如何下载文件
  • 原文地址:https://www.cnblogs.com/dichuan/p/8191193.html
Copyright © 2011-2022 走看看