package com.ecut.javabase; public class JavaDemo07 { //二分查找的java实现方法 public static void main(String[] args) { int b = 4; int a[] = {1,2,3,4,5,6,7,8,9}; int left = 0; int right = a.length - 1; while(left < right) { for(int i = 0;i<a.length;i++) { int middle = (left + right)/2; if(middle < b) { left = middle+1; } else if(middle > b){ right = middle-1; } else{ System.out.println("查找成功,在数组的第"+middle+"位"); return; } } System.out.println("查找失败"); } } }
个人理解是:先找出头和尾,然后求出他们之间的中间值,然后中间值和要查找的值进行对比,如果中间值比查找值大,那么查找的范围就可以排除中间值右边的区域。反过来就排除中间值左边的区域、一遍一遍进行循环,知道找到中间值和两边的值相等的那个数,如果没有找到,就是说明要查找的值并不在该数组里。