public static void main(String[] args) {
int[] a={3,100,2,10,5,17,11,4,9};
int[] b={1,3,7,9,15,20,32,40,55};
// 顺序查找
int seach = seach(a, 5);
System.out.println(seach); // 输出:4,5所在位置下标为4
// 二分法查找
int i = binarySearch(b, 20);
System.out.println(i); // 输出:5,20所在位置下标为5
// 先排序(默认按照升序),然后二分法查找
int m = binarySortSearch(a, 17);
System.out.println(m); // 数组a按照升序排列,17的下标为7
}
private static int seach(int[] array,int num) {
for (int i = 0; i < array.length; i++) {
if(array[i]==num){
return i;
}
}
return -1;
}
public static int binarySearch(int[] array,int num){
int low = 0;
int high = array.length-1;
while (low <= high){
int mid = (low + high)/2;
if (array[mid] < num){
low = mid+1;
}else if (array[mid] > num){
high = mid -1;
}else if (array[mid] == num)
return mid;
}
return -1;
}
public static int binarySortSearch(int[] array,int num){
// 默认升序排列
Arrays.sort(array);
int low = 0;
int high = array.length-1;
while (low <= high){
int mid = (low + high)/2;
if (array[mid] < num){
low = mid+1;
}else if (array[mid] > num){
high = mid -1;
}else if (array[mid] == num)
return mid;
}
return -1;
}
如有帮助,欢迎采纳!