牛科题霸二分查找

tech2023-11-07  101

题目描述

请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。 示例1 输入

5,4,[1,2,4,4,5]

输出 3

代码

import java.util.*; public class Solution { /** * 二分查找 * @param n int整型 数组长度 * @param v int整型 查找值 * @param a int整型一维数组 有序数组 * @return int整型 */ public static int upper_bound_ (int n, int v, int[] a) { int left = 0, right = n-1; int middle = (right+left)/2; int result = n+1; while(left<=right){ if(a[middle]>=v){ right = middle-1; result = middle+1; }else{ left = middle+1; } middle = (left+right)/2; } return result; } }
最新回复(0)