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;
    
    }
  • 相关阅读:
    new Vue() 和 export default {}及Vue页面组件和标签组件说明与比较(非常重要)
    权限管理开源框架(非常重要)
    java 异常2
    java 异常
    java 内部类3(匿名内部类)
    java 内部类2(成员内部类)
    java 内部类1
    java 多态
    java 接口
    java abstract
  • 原文地址:https://www.cnblogs.com/dichuan/p/8191193.html
Copyright © 2011-2022 走看看