数组升序算法c ++

时间:2016-07-13 09:34:06

标签: c++ arrays algorithm class

我的升序功能算法存在一些问题。函数到达函数的最大元素,然后在每个点设置它。例如,您按以下顺序输入输入: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);
    }
}

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

1 个答案:

答案 0 :(得分:0)

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