二分查找

来源:互联网 发布:占领中环 知乎 编辑:程序博客网 时间:2024/06/06 12:36
import java.util.Arrays;/** *  * @author GDL * @time 2015-09-03 16:39 * */public class Search {    public static void main(String[] args) {        //写一个数组        int [] a={2,1,8,9,4,3,66,51,7,6,5,0};        //打印一遍        for (int i = 0; i < a.length; i++) {            System.out.print(a[i]);        }        System.out.println("");        //排序        Arrays.sort(a);        //打印排序后一遍        for (int i = 0; i < a.length; i++) {            System.out.print(a[i]);        }        System.out.println("");        //显示位置        System.out.println(searchMethod1(a, 51));        System.out.println(searchMethod2(a, 51, 0, a.length-1));    }    //普通二分查找    static int searchMethod1(int [] a,int n) {        int left=0;        int right=a.length-1;        int mid=(left+right)/2;        while (left<=right) {            mid=(left+right)/2;            if(n==a[mid]){                return mid;            }else if(n<a[mid]){                right=mid-1;            }else{                left=mid+1;            }        }        return -1;    }    //递归二分查找    static int searchMethod2(int [] a,int n,int left,int right) {        int mid=(left+right)/2;        if(n<a[left]||n>a[right]||left>right){            return -1;        }        if(n<a[mid]){            return searchMethod2(a, n, left, mid-1);        }        else if(n>a[mid]){            return searchMethod2(a, n, mid+1, right);        }else{            return mid;        }    }}
0 0
原创粉丝点击