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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© keto 中级黑马   /  2015-6-25 20:08  /  134 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* 在数组中查找一个数:
* 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;
                }
               
        }

}

0 个回复

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