GESP 四级 · GESP 四级样题(C++ 组) 第 15 题

选择题 · 答案 C

← 整套速查表 GESP 四级 全部真题

题目

在下列代码的横线处填写( ),完成对有 n 个 int 类型元素的数组 array 由小到大排序 ![](https://cdn.luogu.com.cn/upload/image_hosting/gpir76o7.png)

答案:C

解题思维

这道题考的是插入排序的内层循环写法。拿到题先想:当前元素 array[i] 要插入到左边已排好的区间,内层循环必须从紧邻 i 的左边(i-1)开始,且必须向左扫描直到头,所以初始化 j=i-1,步长 j--,条件 j>=0。

常见错误

最容易栽跟头的就是方向搞反或者起始点偏移。选 C 的同学往往把内层循环写成从左往右(j++),这完全违背了插入排序‘把大元素往后挪’的逻辑,导致数组越乱越乱。选 A 的同学则是因为死记硬背‘从 0 开始’或者‘从 i 开始’,忽略了当前元素 i 左边第一个待比较的其实是 i-1,少比一个数,排序结果必错。

详细解析(节选)

【考点】插入排序|循环条件控制|数组下标边界

1. 考纲定位

GESP 四级 算法模块第 2 章「常用排序」,插入排序是必考内容。命题人专门选这个知识点,是因为它表面简单、实则细节致命——90% 的考生背过「插入排序用两层循环」,但一到具体写内层循环就栽跟头,卡住的是「循环起始值与方向」这个基础中的基础。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断