public class Test2T2Method { /** * 采用二分法查找顺序排列数组里的一个数。 */ public static void main(String[] args) { int[] array ={1,2,3,4,5,6,7,8,9}; int n=6; System.out.println(twoFind(array,n)); } public static int twoFind(int[] array,int n){ int startPos=0;//初始起点位置 int endPos=array.length-1;//初始结束位置 int index=(startPos+endPos)/2;//取中点 while(startPos<=endPos){ if (array.length==0){return -1;}//空数组无效 if (n==array[index]){return index;} if (n>array[index]){ //调整起点位置 startPos=index+1; } if (n<array[index]){ //调整结束位置 endPos=index-1; } index=(startPos+endPos)/2; } return -1; } } 之前写成这样,当查找6的时候造成死循环,差点把系统整死. public class Test2T2Method { /** * 采用二分法查找顺序排列数组里的一个数。 */ public static void main(String[] args) { int[] array ={1,2,3,4,5,6,7,8,9}; int length=array.length; int times=0; int n=6; int index=length/2; boolean Found=false; while(!Found){ if(n==array[index]){ Found=true ; } if(n>array[index]){ index=(index+length)/2; } if(n<array[index]){ index=index/2; } times++; } System.out.println(index); System.out.println("查找这个数需循环 "+times+" 次"); } }