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;    
      }   
  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/fulucky/p/7909878.html
Copyright © 2011-2022 走看看