A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔友为 中级黑马   /  2015-9-18 10:24  /  228 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

只针对有有序数组
定义三个指针,一个代表开头,一个代表末尾,一个代表中间值.
假设数组从小到大,因为有序,如果数值小于中间数,那么这个数只可能存在于中间数的左边,结尾指针移动到中间指后一位,针反这则在右边,每比完一轮,数少一半,没有找到再比,最终开头下标大于到最后都没有找到.则结束.
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("数组里没有这个数");
                }
        }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马