下面代码试图实现选择排序,使其能对数组 nums 排序为升序,则横线上应分别填写( )。
void selectionSort(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n - 1; ++i) {
int minIndex = i;
for (int j = i + 1; j < n; ++j) {
if (__________) { // 在此处填入代码
minIndex = j;
}
}
______________; // 在此处填入代码
}
}A.
nums[j] < nums[minIndex]
swap(nums[i], nums[minIndex])B.
nums[j] > nums[minIndex]
swap(nums[i], nums[minIndex])C.
nums[j] <= nums[minIndex]
swap(nums[j], nums[minIndex])D.
nums[j] <= nums[minIndex]
swap(nums[i], nums[j])答案A。代码补全要考虑参数传递方式。如果需要修改实参,需用指针(*)传递。排序算法要理解每步比较的含义。
排序代码补全要理解每步比较的含义。选择排序找最小值时比较的是array[min]>array[j]。
【考点】选择排序|数组操作|循环控制
GESP 四级 C++ 算法模块经典题型,专门卡住"只背排序名称、不懂实现细节"的考生。命题人盯上的就是选择排序最易混淆的两个点:找最小值的比较方向、交换对象的位置。