请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
区块链毕设网qklbishe.com为您提供问题的解答
请实现有重复数字的有序数组的二分查找。
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 容量 int size = in.nextInt(); // 目标值 int target = in.nextInt(); // 容器 int[] arr = new int[size]; for (int i = 0; i < size; i++) { arr[i] = in.nextInt(); } System.out.println(compute(target, arr)); } private static Integer compute(int t, int[] intArr) { int l = 0; // 最左边开始索引 int r = intArr.length - 1; // 最右边结束索引 while (l <= r) { // 循环条件 左指针不大于右指针 int mid = l + (r - l) / 2; // 记录每一次的中位索引->二分查找 if (intArr[mid] < t) { // 比目标值小 说明可能性在数组后程 l = mid + 1; // 更新左指针为中位数后一个位置的索引 } else if (intArr[mid] >= t) { // 大于或等于目标值 把右指针更新为中位数前一个位置的索引 r = mid - 1; } } // 结果是 返回位置(索引 + 1等于位置)/ 返回数组长度+1 return l < intArr.length ? l + 1 : intArr.length + 1; } }
16:18
以上就是关于问题请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训