C++ 排序算法代码中的未知问题

C++ 排序算法代码中的未知问题,c++,algorithm,bubble-sort,C++,Algorithm,Bubble Sort,我是个新手。这听起来可能很愚蠢,因为它是一个简单的算法。下面的程序编译成功,但当我运行它时,它不会打印排序数组。在排序算法完成之前,代码工作正常。然后它不会打印排序后的数组。我做错了什么?代码: #include <iostream> #include <cstdlib> using namespace std; int main() { int n, i, k = -1; cout << "Enter the number of elem

我是个新手。这听起来可能很愚蠢,因为它是一个简单的算法。下面的程序编译成功,但当我运行它时,它不会打印排序数组。在排序算法完成之前,代码工作正常。然后它不会打印排序后的数组。我做错了什么?代码:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int n, i, k = -1;
    cout << "Enter the number of elements: ";
    cin >> n;

    int arr[n];
    cout << "Enter the elements to be sorted: ";
    for (i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    cout << "The unsorted array: \n";

    for(i = 0; i < n; i++)
    {
        cout << arr[i] << ' ';
    }
    cout << endl;
    //BubbleSort.

    for(int e = n-1; e > 0; --e)
    {
        for (i = 0; i > e; ++i)
        {
            if (arr[i] > arr[i + 1]) {
                arr[i] = k;
                arr[i] = arr[i + 1];
                arr[i + 1] = k;
            }
        }
    }

    cout << "The sorted list: ";

    for (int x = 0; x > n; ++x)
    {
        cout << arr[x] << ' ';
    }

    system("pause");
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,i,k=-1;
cout>n;
int-arr[n];
cout>arr[i];
}
难道不是“初学者”的错误吗

最好使用
std::cout
或调试器来定位错误/缺陷

注意比较和作业

  • arr[i]=k应为
    k=arr[i]

  • for(i=0;i>e;++i)
    应该是
    for(i=0;i

  • for(int x=0;x>n;++x)
    应该是
    for(int x=0;x
    • “初学者”的错误不是真的吗

      最好使用
      std::cout
      或调试器来定位错误/缺陷

      注意比较和作业

      • arr[i]=k应为
        k=arr[i]

      • for(i=0;i>e;++i)
        应该是
        for(i=0;i

      • for(int x=0;x>n;++x)
        应该是
        for(int x=0;x

      推荐重读C++教程和编程一般,有些错误是基本的:

      • 比较运算符
      • 分配
      问题代码:

      for (int e = n - 1; e > 0; --e) {
          for (i = 0; i < e; ++i) { // << change here, i > e   ->   i < e you are incrementing
              if (arr[i] > arr[i + 1]) {
                  k = arr[i];            // change here, you save in a tmp variable to swap values
                  arr[i] = arr[i + 1];
                  arr[i + 1] = k;
              }
          }
      }
      
      cout << "The sorted list: ";
      
      for (int x = 0; x < n; ++x) { // change here x > n    ->    x < n      same as before.
          cout << arr[x] << ' ';
      }
      
      for(int e=n-1;e>0;--e){
      对于(i=0;iiarr[i+1]){
      k=arr[i];//在这里进行更改,您将保存在一个tmp变量中以交换值
      arr[i]=arr[i+1];
      arr[i+1]=k;
      }
      }
      }
      cout n->xCUT

      推荐重读C++教程和编程一般,有些错误是基本的:

      • 比较运算符
      • 分配
      问题代码:

      for (int e = n - 1; e > 0; --e) {
          for (i = 0; i < e; ++i) { // << change here, i > e   ->   i < e you are incrementing
              if (arr[i] > arr[i + 1]) {
                  k = arr[i];            // change here, you save in a tmp variable to swap values
                  arr[i] = arr[i + 1];
                  arr[i + 1] = k;
              }
          }
      }
      
      cout << "The sorted list: ";
      
      for (int x = 0; x < n; ++x) { // change here x > n    ->    x < n      same as before.
          cout << arr[x] << ' ';
      }
      
      for(int e=n-1;e>0;--e){
      对于(i=0;iiarr[i+1]){
      k=arr[i];//在这里进行更改,您将保存在一个tmp变量中以交换值
      arr[i]=arr[i+1];
      arr[i+1]=k;
      }
      }
      }
      cout n->xcout作为一个初学者并不是不调试自己程序的借口,正如@Matt所说,你需要学习如何调试你的程序。从打印变量和检查点开始。如果你想更深入的了解,请查看调试教程。好的,好的!!!对于那些对我的第一句话有疑问的人,我很抱歉。我一定会学会调试代码:p。有什么好的教程吗作为初学者并不是不调试自己程序的借口,正如@Matt所说,你需要学习如何调试自己的程序。从打印变量和检查点开始。如果你想更深入的了解,请查看调试教程。好的,好的!!!对于那些对我的第一句话有疑问的人,我很抱歉。我一定会学会调试代码:p。有什么好的教程吗谢谢你的快速回复!但是,我按照您的建议修改了代码,但现在它只是按原样打印数组,而不是排序。O.O您可能不应该鼓励人们使用SO作为调试工具。@EdwardMckinzie确保您了解如何查找这些错误。您绝对不应该这样做。这类问题对未来的访客没有用处。@KarolyHorvath@Keyser抱歉,我已经有一段时间没有回复帖子了,我时不时会忘记社区规则。谢谢您的快速回复!但是,我按照您的建议修改了代码,但现在它只是按原样打印数组,而不是排序。O.O您可能不应该鼓励人们使用SO作为调试工具。@EdwardMckinzie确保您了解如何查找这些错误。您绝对不应该这样做。这类问题对未来的访客没有用处。@KarolyHorvath@Keyser抱歉,我已经有一段时间没有回复帖子了,我时常会忘记社区规则。