public class Search {
public static boolean binarySearch(int[] a,int x,int left,int right){//二分查找的主方法
if(x==a[left]||x==a[right])return true; //找到,返回真
if(right-left<2)return false; //可找元素小于3,由上一步说明没有,返回假
int mid = (left+right)/2; //否则:二分
if(x==a[mid])return true; //中间元素OK,返回OK
else{ //否则
if(x>a[mid])return binarySearch(a,x,mid+1,right);//大于中间元素找右半部分
else return binarySearch(a,x,left,mid-1); //小于中间元素找左半部分
}
}
public static final int[] sort(int[] a){ //int数组 的 排序方法
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
if(a[i]<a[j]){
swap(a,i,j);
}
}
}
return a;
}
private static void swap(int[] a, int i, int j) { //数组元素交换子函数
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static void print(int[] a){ //打印函数
System.out.println();
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
if(i!=a.length-1)System.out.print(",");
}
System.out.println();
}
public static void main(String[] args) { //测试方法
int[] a = {90, 12, 21, 32, 51, 78, 87, 98};
print(sort(a));
System.out.println(binarySearch(sort(a), 40, 0, a.length-1));
}
} |