游戏大赛决赛,两组选手分别按得分从小到大排好队,现在要把他们合并成一个有序排行榜。 A组: A = {12, 35, 67, 89} ,B组: B = {20, 45, 55, 78} ,下面是归并合并函数的核心循环,横线处应填 入( )。int i = 0, j = 0; vector result; while (i < A.size() && j < B.size()) { if (A[i] <= B[j]) { result.push_back(A[i++]); } else { result.push_back(B[j++]); } while (i < A.size()) { while (j < B.size()) {
A:A[i] >= B[j]
B:A[i] = j
D:i <= j
正确答案:B
答案解析
初始化两个指针分别指向两组的起始位置,通过循环比较当前指针所指元素的大小,将较小元素加入结果序列,并移动对应指针。循环继续的条件是两个指针均未越界。每次比较需判断当前A组元素是否小于B组元素,以决定取哪个数组的元素。当某一组元素处理完毕后,另一组剩余元素依次加入结果。核心在于维护两个独立索引的同步推进与边界控制。
试卷来源:202603 CCF-GESP编程能力等级认证C++五级真题