0

这是我到目前为止所拥有的。当我编译时,我没有收到任何错误。

 // Sorting Benchmarks
 #include <iostream>
 using namespace std;

 // Function Prototypes
 int bubbleSort (long [], int);
 void showArray (long [], int);

 int main()
 {
     // Define an array with unsorted values
     const int SIZE = 20;
     long values[SIZE] = {20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
     int n;

     // Display the values.
    cout << "The unsorted values are\n";
    showArray(values, SIZE);

    // Sort the values using bubble sort
    n = bubbleSort (values, SIZE);

    // Display the number of exchanges while using bubble sort
    cout << n;

    // Display the sorted values.
    cout << "The sorted values are\n";
    showArray (values, SIZE);
    return 0;    
}

int bubbleSort (long array[], int size)
{
    bool swap;
    int temp;
    int exchanges;
    exchanges = 0;
    do
    {
         swap = false;
         for(int count = 0; count < (size - 1); count++)
         {
               if (array[count] > array[count + 1]);
               {
                    array[count + 1] = temp;
                    swap = true;
                    exchanges++;
               }
         }
     }
     while (swap);
     return exchanges;
}

void showArray(long array[], int size)
{
     for(int count = 0; count < size; count++)
     cout << array[count] << " ";
     cout << endl;

     system("PAUSE");
 }

问题是当我运行代码时,我得到的唯一一行是“未排序的值是 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 按任意键继续...”

为什么我按任意键后其余代码都不会运行?

谢谢您的帮助。

4

2 回答 2

1

;由于这一行的末尾,您的程序有一个无限循环:

                  if (array[count] > array[count + 1]);

把它拿出来。请注意,您的程序仍有其他错误(您的交换已损坏)。

您可能会考虑切换编译器。即使没有任何特殊标志,Clang 也会警告您的代码:

example.cpp:43:59: warning: if statement has empty body [-Wempty-body]
                      if (array[count] > array[count + 1]);
                                                          ^
example.cpp:43:59: note: put the semicolon on a separate line to silence this
      warning
于 2013-09-06T04:21:49.720 回答
1

我认为你的错误是这一行:

          if (array[count] > array[count + 1]);

您可能不希望最后的分号。

于 2013-09-06T04:21:52.697 回答