java实现二分法查找任意数

java实现二分法查找任意数


今天写一个小东西,利用二分法实现数组元素的查找,首先我们需要知道它的实现逻辑。首先,我们要查找的数据需要时有序的,不重复的,所以首先会进行排序,这里是自定义的数据,就不排序了。然后进行查找。废话不多说,代码中有注释,需要的大家自己可以看看,很容易就可以理解了。

  • 代码如下:
public class Text{

    public static void main(String[] args){
        int[] list = {2, 4, 7, 10, 11, 45, 50, 59, 60, 66, 69, 70, 79};  

              int i =binarySearch(list,11);
              System.out.println(i);  
    }

/**
* 实现二分查找,并返回查找到的数据下标
* 参数:要查询的数据,要查询的数   
*/
public static int binarySearch(int[] list, int key) {  
            int low = 0;  
            int high = list.length - 1;  

            while (high >= low) {  
               //找到中间数
              int mid = (low + high) / 2;  
              //判断中间数是否大于要找的数,若成立,则数组最大下标改为原来的一半-1
             if (key < list[mid])  
                high = mid - 1;  
              else if (key == list[mid])  
                return mid;  
              else  
                low = mid + 1;  
            }  

            return -low - 1; // Now high < low  
          }  

}

就是这么简单,结束了,这样就可以运行测试了。

你可能感兴趣的:(java)