黑马程序员技术交流社区

标题: 折半查找 [打印本页]

作者: 乔友为    时间: 2015-9-18 10:24
标题: 折半查找
只针对有有序数组
定义三个指针,一个代表开头,一个代表末尾,一个代表中间值.
假设数组从小到大,因为有序,如果数值小于中间数,那么这个数只可能存在于中间数的左边,结尾指针移动到中间指后一位,针反这则在右边,每比完一轮,数少一半,没有找到再比,最终开头下标大于到最后都没有找到.则结束.
public static void reduceSort(int[] arr,int x)
        {
                int start=0,end =arr.length-1,mid=(start+end)/2;
                while (start<=end)
                {
                        if (x==arr[mid])
                        {
                                System.out.println(mid);
                        }
                        if (x<arr[mid])
                        {
                                end=mid-1;
                                mid=(start+end)/2;
                        }
                        if (x>arr[mid])
                        {
                                start=mid+1;
                                mid=(start+end)/2;
                        }
                }
                if (start>end)
                {
                        System.out.println("数组里没有这个数");
                }
        }






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2