数组升序算法 c++

Array Ascending algorithm c++

本文关键字:c++ 算法 升序 数组      更新时间:2023-10-16

我的升序函数算法遇到了一些问题。该函数 到达函数的最大元素,然后在每个位置设置它。例如,按以下顺序输入输入:88、72、81。然后你得到 88,88,88 而不是 72、81、88;

法典:

void orderGrades(Student grades[], int studentNumber){
int startScan, minIndex, minValue;
for(startScan = 0; startScan < (studentNumber - 1); startScan++){
    minIndex = startScan;
    minValue = grades[startScan].getGrade();
    for(int index = startScan + 1; index < studentNumber; index++)
    {
        if(grades[index].getGrade() < minValue)
            {
                grades[index].setGrade(minValue);
                minIndex = index;
            }
        }
        grades[minIndex].setGrade(grades[startScan].getGrade());
        grades[startScan].setGrade(minValue);
    }
}

不确定我用逻辑忽略了什么,所以我想看看其他人是否有不同的观点。

在不给你整个解决方案的情况下,我可以给你一个提示......在调试器中运行程序后,我看到在内部 for 循环中的 if 语句中,您覆盖了下一项的值,它永远丢失了;这将发生在外部 for 循环第一次迭代中的每个数组元素上(这就是为什么你在每个元素中得到 88 的原因)。幸运的是,您提供了一个失败的测试用例:-)