二分查找

来源:互联网 发布:2017年伤感网络歌曲 编辑:程序博客网 时间:2024/06/08 09:50
public class BinarySearch {    public static void main(String[] args) {        int[] arr = {0,1,2,3,4,5,6,7,8,9};        Integer pos = Iterative_BinarySearch(arr,11,0,arr.length-1);        if(pos==null){            System.out.println("不存在的");        }else{            System.out.println("找到,位置是:"+pos);        }        /////////////////////////////////////////        int[] arr2 = {0,1,2,3,4,5,6,7,8,9};        Integer pos2 = Recursive_BinarySearch(arr2,3,0,arr.length-1);        if(pos2==null){            System.out.println("不存在的");        }else{            System.out.println("找到,位置是:"+pos2);        }    }    //迭代版本的二分查找:    public static Integer Iterative_BinarySearch(int[] arr,int value,int low,int high){        while(low<=high){            int mid = (low+high)/2;            if(arr[mid]==value){                return mid;            }else{                if(arr[mid]<value){                    low = mid+1;                }else{                    high = mid-1;                }            }        }        return null;    }    //递归版本的二分查找:    public static Integer Recursive_BinarySearch(int[] arr,int value,int low,int high){        if(low>high){            return null;        }        int mid = (low+high)/2;        if(arr[mid]==value){            return mid;        }else{            if(arr[mid]<value){                return Recursive_BinarySearch(arr,value,mid+1,high);            }else{                return Recursive_BinarySearch(arr,value,low,mid-1);            }        }    }}