You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:48:03