关于数组和逻辑错误

时间:2016-04-15 12:16:54

标签: c++ arrays

我希望下面的代码能够按升序或降序打印数字,但是当我给出cout语句时,我得到的是同一个数组。我无法弄清楚我犯错误的地方(而且我正在使用这种方法,因为学校需要这个程序而且我不希望任何功能为我做这个)

#include<iostream>
#include<algorithm>   //<utility> for C++11
using namespace std;
int main()
{
    int array[5] = { 1,4,6,9,5 };
    for (int i = 0; i<5; i++)
    {
        for (int j = 0; j<5; j++)
        {
            if (array[i]<array[j])
            {
                swap(array[i], array[j]);
            }
        }
    }
    for (int k = 0; k<5; k++)
        cout << array[k] << "    ";
    return 0;
}

1 个答案:

答案 0 :(得分:1)

我认为第4行应该是:

for (int j = i + 1; j < 5; j++)

此外,交换函数需要通过引用传递:

void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = a;
}