//折半查找: //选择排序; import java.util.Arrays; import java.util.Scanner; public class Example2_5 { public static void main(String[] args) { int start=0,end,middle; int[] a={12,45,67,89,123,-45,67};//定义数组; int N=a.length;//求取数组的长度; int minIndex=-1; for (int i = 0; i < N - 1; i++) {//选择排序; minIndex=i; for (int j = i+1; j < N; j++) { if(a[j]<a[minIndex])minIndex=j;//选出这个数组往后面最小的数; } if (minIndex!=i){//进行数据交换; int t=a[minIndex]; a[minIndex]=a[i]; a[i]=t; } } //输出; System.out.println(Arrays.toString(a)); //输入; Scanner scanner = new Scanner(System.in); System.out.println("输入数字判断是否在数组中:"); int number=scanner.nextInt();//输入数据; int count=0;//计数; end=N; middle=(start+end)/2; while(number!=a[middle]){//折半查找; if (number>a[middle]) start=middle;//取出后半部分; if (number<a[middle]) end=middle;//去出前半部分; middle=(start+end)/2; count++; if (count>N/2)//已经左边和右边的越界了; break; } if (count>N/2) System.out.printf("%d不在数组中.\n",number); else System.out.printf("%d在数组中.\n",number); } }