java

导航

java认证考试编程题(19)

来源 :中华考试网 2016-10-06

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

/**

     * 二分查找特定整数在整型数组中的位置(递归)

     * @param dataset

     * @param data

     * @param beginIndex

     * @param endIndex

     * @return index

     */

    public int binarySearch(int[] dataset,int data,int beginIndex,int endIndex)

    {

       int midIndex = (beginIndex+endIndex)/2;

       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;

       }

    }

   

    /**

     * 二分查找特定整数在整型数组中的位置(非递归)

     * @param dataset

     * @param data

     * @return index

     */

    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;

    }

分享到

相关资讯