题库首页 › GESP等级认证(Python) › 题目 25917

在一个有序数组中查找第一个大于或等于 x 的元素位置,横线处应填写( )。 def lowerBound(a, x): l = 0 r = len(a) while l = x: # ------------------------ # 在此处填入代码 else: l = mid + 1 return l

A:r = mid + 1
B:r = mid - 1
C:r = mid
D:l = mid

正确答案:C

答案解析

使用二分查找维护区间[l, r),使得a[0..l)均小于x,a[r..n)均大于等于x。循环条件为l < r。取mid = (l + r) // 2,若a[mid] >= x,则第一个满足条件的位置在mid或其左侧,因此更新r = mid;否则位置在mid右侧,更新l = mid + 1。循环结束时l即为首个大于等于x的元素下标。

试卷来源:202606 CCF-GESP编程能力等级认证Python五级真题

本卷相关题目

在线做题 同科目题库