C++调用void类型数组排序函数后print打印结果未生效问题排查
问题原因
你的sort排序函数逻辑不完整:你只实现了选择排序中查找每一轮最小元素下标的步骤,没有执行「把最小元素交换到当前轮次起始位置」的操作,数组内容没有被实际修改,所以打印结果和排序前完全一致。
修复代码
直接替换你的sort函数即可,其余代码的调用逻辑完全正确不需要改动:
void sort(double array[], int numValues) { //initialize values int top, ssf, ptr; int last = numValues; double temp; // 新增临时变量用于元素交换 //finds smallest value and replaces it for(top = 0; top < last - 1; top++) { for(ptr = top, ssf = top; ptr < last; ptr++) { if(array[ptr] < array[ssf]) { ssf = ptr; } } // 新增交换逻辑:把本轮最小元素放到当前轮次的头部 if(ssf != top) { temp = array[top]; array[top] = array[ssf]; array[ssf] = temp; } } }
内容的提问来源于stack exchange,提问作者Fortnite_Pro
相关产品推荐
相关产品推荐

