无法使用冒泡排序从最高到最低排序

时间:2017-12-09 22:20:30

标签: c++ visual-studio sorting

我的程序读取每个学生的5个等级的文本文件,并使用菜单选择用户是否需要最大值,最小值或平均值。一切都按预期工作,但等级值没有从高到低列出。这是我的冒泡排序功能:

void bubbleSort(vector<Student>& grades, bool(*doSwapTest)(Student &, 
                Student &))
{
    bool didSwap = false;

    for (int i = grades.size() - 1; i > 0; i--)
    {
        didSwap = false;                    // we assume no swaps
        for (int j = 0; j < 1; j++)
        {
            if ((*doSwapTest)(grades[j], grades[j + 1]))
            {
                swap(grades[j], grades[j + 1]);
                didSwap = true;
            }
        } // end of inner for loop
        if (!didSwap) break;
    } // end of outer for loop
}

以下是我输出的screenshot,注意字母成绩未排序。我试过更改&gt;和&lt;我的交换语句中的运算符,但它似乎没有改变等级的顺序。

我的程序没有返回任何错误,有人可以就如何解决这个问题给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

我将(int j = 0; j < 1; j++)更改为int j = 0; j < i; j++,这解决了我的问题。