public class HalfSelect {
/**
* 二分法查找
*
* @param arr
* 数组
* @param num
* 要查找的数字
* @return 返回位置
*/
private static int halfLook(int[] arr, int num) {// 二分法查找
int middle;
int start = 0, last = arr.length - 1;
if (num < arr[start] || num > arr[last])
return -1;
while (true) {
middle = (last + start) / 2; // 求中间位置
if (start > last) {
break;
}
if (num > arr[middle]) {
start = middle + 1;
} else if (num < arr[middle]) {
last = middle - 1;
} else
return middle; // 相等则返回
}
return -1;
}
public static void halfShow(int arr[]) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你要查找的数:");
int n = input.nextInt();
int w = halfLook(arr, n);
if (w >= 0)
System.out.println((new StringBuilder("位置:")).append(w).toString());
else
System.out.println("没有该数!");
}
}