先排序在查找,用api中的方法 也要用Arrays.sort排序,再用Arrays.binarraysearch
package com.qf.demo4;
/**
* 二分查找法
*
* 二分查找法的基础 这个数组必须是有序
* @author Administrator
*
*/
public class Test2 {
public static void main(String[] args) {
int a[] = {3,7,2,9,1,0,8};
int[] b = sort(a);
for (int i : b) {
System.out.print(i+"\t");
}
System.out.println();
System.out.println(find(b, 9));
}
public static int[] sort(int[] a){
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]>a[j+1]){
int temp = a[j];
a[j]=a[j+1];
a[j+1] = temp;
}
}
}
return a;
}
// 不考虑不再数组中的情况
public static int find(int a[],int b){// b就是想要在数组中找的数据
int min = 0;
int max = a.length-1;// 注意最大值是数组的长度 而非 数组的最大的下标
while(min<=max) {
// 求中间的下标
int middle =( min+max)/2;
// 判断 middle对象的值 比指定的数据大 小 或者相等
if(a[middle]>b){
// b在上半部分 将最大值设置为 middle
max = middle-1;
}else if(a[middle]<b){
// b 在下半部分 将最小值设置成为 middle
min = middle+1;
}else {
return middle;
}
}
return -1;
}
}