冒泡排序的第一轮操作是从左到右遍历数组,通过两两比较相邻元素,将当前最大的元素移动到末尾。给定数组 arr[]={4, 1, 3, 1, 5, 2},执行第一轮冒泡排序后数组 arr 中的内容为( )。
答案B。选择排序每轮找最小值交换到前面。补全时要确保比较的是当前元素与当前最小值。
选择排序每轮找到最小值下标后与当前位置交换。注意比较的是数组元素值而不是下标。
【考点】冒泡排序|数组遍历|模拟执行
🎯 考纲定位 GESP 四级《C++程序设计与应用》第5章《算法基础》。命题人想卡住学生"按步骤模拟算法"的短板——不是背"冒泡排序"的定义,而是真正动手模拟一遍。
🧠 解题思维 先定位"冒泡第一轮必把最大值沉底"这一通性,再逐对比较:4与1交换、4与3交换、4与1交换、4与5不交换、5与2交换。最终得到1, 3, 1, 4, 2, 5。
🪤 陷阱拆解 A选项是只做了第一次交换就停止,C选项把5与2交换却忽略了4与3、4与1的交换,D选项是原始数组,命题人利用"未完全执行"和"误判已排序"两个思维盲区。
🔄 反命题思维 如果把数组改成{5, 4, 3, 2, 1, 0},第一轮结果就是4, 3, 2, 1, 0, 5,本质不变。刷到这类题先问自己"命题人想考我什么"——如果考的是"冒泡排序",那一定是让你模拟过程,而不是背结论。