用Java写一个折半查找
public class MyRTest {
public static void main(String[] args) {
int[] a = { 2, 5, 6, 8, 9, 10 };
// int key = halfSelect(a, 2);
// int key = halfSelect2(a, 9);
int key = Arrays.binarySearch(a, 8);// java自己有的二分查找方法
if (key == -1) {
System.out.println("没有找到");
} else {
System.out.println("要找的数的索引为" + key);
}
}
public static int halfSelect(int[] a, int key) {
int min = 0;
int max = a.length - 1;
int mid;
while (max >= min) {
mid = (min + max) / 2;
if (key > a[mid]) {
min = mid + 1;
} else if (key < a[mid]) {
max = mid - 1;
} else {// key==a[mid]
return mid;
}
}
return -1;
}
public static int halfSelect2(int[] a, int key) {
int min = 0;
int max = a.length - 1;
int mid = (min + max) / 2;
while (key != a[mid]) {
if (key > a[mid]) {
min = mid + 1;
} else if (key < a[mid]) {
max = mid - 1;
}
if (max < min) {
return -1;
}
mid = (min + max) / 2;
}
return mid;
}
}