黑马程序员技术交流社区

标题: 二分查找 [打印本页]

作者: keto    时间: 2015-6-25 20:08
标题: 二分查找
/*
* 在数组中查找一个数:
* 1.基本查找:依次遍历,并依次比较。缺陷:如果数组较长,几十万的长度,要找的数在左右一个,也得从头找。
* 2.二分查找:
*/
public class Demo {
        public static void main(String[] args) {
                int[] arr = {2,3,6,6,78,88,99};
                for(int i = 0; i< arr.length ; i++){
                        System.out.println("循环第:" + (i + 1) + " 次查找:");
                        if(arr[i] == 88){
                                System.out.println("找到,索引为:" + i);
                                break;
                        }
                }
               
                //二分查找实现:
                int start = 0;
                int end = arr.length - 1;
                int mid = (start + end) / 2;
                int num = 88;
                while(end >= start){
                        System.out.println("循环一次:");
                        if(num > arr[mid]){
                                //向右走
                                start = mid + 1;
                        }
                        if(num < arr[mid]){
                                //向左走
                                end = mid - 1;
                        }
                        if(num == arr[mid]){
                                //找到了
                                System.out.println("二分查找找到:" + mid);
                                break;
                        }
                        //改变一下mid的值
                        mid = (start + end) / 2;
                }
               
        }

}





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