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

    用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1 

    使用递归算法

    /**   
    *二分查找特定整数在整型数组中的位置(递归)   
    */    
    public int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){    
       int midIndex = (beginIndex+endIndex)/2;    
       //如果查找的数要比开始索引的数据要小或者是比结束索引的书要大,或者开始查找的索引值大于结束的索引值返回-1没有查到   
       if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){   
           return -1;   
       }   
       if(data <dataset[midIndex]){     
           return binarySearch(dataset,data,beginIndex,midIndex-1);    
       }else if(data>dataset[midIndex])    
       {    
           return binarySearch(dataset,data,midIndex+1,endIndex);    
       }else {    
           return midIndex;    
       }    
    }    

    非递归算法

    /**   
      *二分查找特定整数在整型数组中的位置(非递归)   
      */    
      public int binarySearch(int[] dataset ,int data)    
      {    
        int beginIndex = 0;     
        int endIndex = dataset.length - 1;     
        int midIndex = -1;    
        if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){   
            return -1;    
        }   
        while(beginIndex <= endIndex) {    
            midIndex = (beginIndex+endIndex)/2;    
            if(data <dataset[midIndex]) {     
               endIndex = midIndex-1;     
            } else if(data>dataset[midIndex]) {     
              beginIndex = midIndex+1;     
            }else {    
              return midIndex;    
            }    
        }    
        return -1;    
      }   
  • 相关阅读:
    Log4j2_java日志使用
    Log4j_java日志使用
    DB_常用知识
    Oracle_内置信息
    Loadrunner使用时IE浏览器打不开怎么办
    性能测试
    python条件语句及循环语句
    计算机网络
    单元测试
    边界条件测试
  • 原文地址:https://www.cnblogs.com/fulucky/p/7909878.html
Copyright © 2011-2022 走看看