二分查找
/**
* @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 }