java

当前位置:中华考试网 >> java >> java面试题 >> 文章内容

java认证考试编程题(19)

来源:中华考试网  [2016年10月6日]  【

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

    }

责编:sunny
  • 会计考试
  • 建筑工程
  • 职业资格
  • 医药考试
  • 外语考试
  • 学历考试