zoukankan      html  css  js  c++  java
  • 二分查找的递归、非递归算法

    查找成功返回对应的数组下标,失败返回-1

    1.递归实现

    int _binarySearch(int * array,int begin,int end,int value){
        if(begin > end){
            return -1;
        }
        int index = (begin+end)/2;
        int sig = array[index]-value;
        if(sig == 0){
            return index;
        }
        else if(sig > 0){
            end = index-1;
        }
        else{
            begin = index+1;
        }
        return _binarySearch(array,begin,end,value);
    }

    2.非递归实现

    int binarySearch( int * array, int size, int value){
         int begin = 0 ,end = size;
         int index;
         while (begin <= end){
            index = (begin + end) / 2 ;
             int sig = array[index] - value;
             if (sig == 0 ){
                 return index;
            }
             else if (sig > 0 ){
                end = index - 1 ;
            }
             else {
                begin = index + 1 ;
            }
        }
         return - 1 ;
    }
  • 相关阅读:
    MapReduce&Yarn
    Linux网络配置问题
    Linux命令总结
    Hadoop优化&新特性
    Zookeeper
    idea中修改注释颜色
    Linuxbash未找到命令问题
    Hadoop3.0入门
    HDFS
    SpringBoot
  • 原文地址:https://www.cnblogs.com/shadowwalker/p/binarysearch.html
Copyright © 2011-2022 走看看