首页 > 代码库 > 一维数组之二分查找

一维数组之二分查找

/**
     * @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 则没找到
     * 否则 输出下标
     */

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("轻输入一个数");
        int Number = input.nextInt();

            int []array = {1,2,3,4,5,6,7,8,9};
            int start = 0;
            int end= array.length -1;
            int middel = 0;
            int index = -1;

 


            while (start <= end){


                           middel = (start + end ) / 2;
            
                            if(Number == array[middel]){
                                 index = middel+1;
                                  break;
                               }
                   else if(Number > array[middel]){
                        start = middel + 1;
                    }
                 else {
                          end = middel - 1 ;
                  }
                  }
        
       if(array(Number) == -1){
            System.out.println("not find");
             }


      else {
               System.out.println("find at "+ array(Number));
        }
   } 

 

一维数组之二分查找