一维数组之二分查找

二分查找

/**
     * @param args
     * @author wangxianpeng
     * 工作原理  :
     * 二分查找法 又称折半查找法 。将数组中间位置记录的关键字与查找的关键字进行比较,
     * 如果两者相等 则查找成功; 否则利用中间位置记录将数组分成前,后两个子数组
     * ,如果中间位置记录的关键字大于查找关键字,则进一步查找前面的子数组
     * ,否则 进一步查找后面的子数组。重复以上的过程,直到找到或找不到为止。
     *
     * 步骤:
     * 1. 创建数组  array并静态初始化。
     *
     * 2. 提示用户 属于要查找的数 number
     *
     * 3.声明开始下标start, 结束下标 end ,中间下标 middle并赋值   。
     *
     * 4.声明下标号 index  并赋值为-1;
     *
     * 5. 找出中间坐标的公式是  middle = (start + end) / 2。
     *
     * 6.if (number == array[middle]) 则把下 index = middle; break;
     *
     * 7.if(number > array[middle])   则 start = middle +1;
     *
     * 8.if(number < array{middle]) 则 end = middle -1;
     *
     * 采用while 循环 条件是 (start <= end )
     *
     * 输出结果  :如果index =-1 则没找到
     * 否则 输出下标
     */

 1 public static void main(String[] args) {
 2         Scanner input = new Scanner(System.in);
 3         System.out.println("轻输入一个数");
 4         int Number = input.nextInt();
 5 
 6             int []array = {1,2,3,4,5,6,7,8,9};
 7             int start = 0;
 8             int end= array.length -1;
 9             int middel = 0;
10             int index = -1;
11 
12  
13 
14 
15             while (start <= end){
16 
17 
18                            middel = (start + end ) / 2;
19             
20                             if(Number == array[middel]){
21                                  index = middel+1;
22                                   break;
23                                }
24                    else if(Number > array[middel]){
25                         start = middel + 1;
26                     }
27                  else {
28                           end = middel - 1 ;
29                   }
30                   }
31         
32        if(array(Number) == -1){
33             System.out.println("not find");
34              }
35 
36 
37       else {
38                System.out.println("find at "+ array(Number));
39         }
40    }  

 

posted @ 2017-03-29 11:42  阳光很好,我亦很好  阅读(461)  评论(0)    收藏  举报