/**
* 利用二分法 查找对应位置
* 输入:
* 3 (要查找的数据)
* 5 (数组的长度)
* 1 2 3 4 5 (递增数组)
*
* 输出:
* 2 (数据3在数组中位置)
*
*如果此数在数组中不存在,则输出(-1-该数应该在数组中的位置)
*/
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner reader = new Scanner(System.in);
int index = reader.nextInt();
int length = reader.nextInt();
int[] Array = new int[length];
for (int i = 0; i < length; i++) {
Array[i] = reader.nextInt();
}
System.out.println(ErFenfa(Array, index));
}
/**
* 计算位置
*
* @param Array
* @param index
* @return
*/
public static int ErFenfa(int[] Array, int index) {
int begin = 0;
int end = Array.length - 1;
int middle = 0;
while (begin <= end) {
middle = (begin + end) / 2;
if (index < Array[middle])
end = middle - 1;
else if (index > Array[middle])
begin = middle + 1;
else {
return middle;
}
}
return -1 - middle;
}
}
二分法查找位置
最新推荐文章于 2023-03-24 16:54:36 发布