代码无法尝试以不同方式进行冒泡排序

Code not working trying to do bubble sort in different way

#include <iostream>

using namespace std;

int main() {
  int n, arr[n];
  cin >> n;
  int i, j;
  int counter = 1;
  for (i = 0; i < n; i++) {
    cin >> arr[i]; // taking arr inputs
  }
  while (counter < n) { 
    for (i = 0; i < n - counter; i++) {
      if (arr[i] > arr[i + 1]) {
        j = arr[i]; // swapping numbers
        arr[i] = arr[i + 1];
        arr[i + 1] = j;
      }
    }
    counter++;
  }
}

我的代码只是退出,它没有接受任何输入或给出任何输出或错误。 我只是想这样做让我知道有什么错误不要改变方法

我尝试将 conter 更改为循环,但它没有用

试试冒泡排序

我们初学者需要团结起来。

您的代码中存在一些非常小的问题。

您的变量“n”未初始化。所以它有一个不确定的值。所以,一些东西。然后你尝试用这个“东西”来设置你的数组的大小。之后,您从用户那里读取尺寸。

另外。 VLA(可变长度数组),所以像“array[n]”这样的东西,其中“n”不是编译时常量是非法的。它不是 C++ 的一部分。一些编译器允许它作为扩展,但它是非法的 C++ 代码。但好消息是:替代品有所减少: std::vector

最后但同样重要的是,如果你想看到一些输出,那么你需要输出一些东西。因此,例如使用“std::cout << something”。

通过以上更改,您的代码可能如下所示:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n = 0;
    cin >> n;
    std::vector<int> arr(n);
    int i = 0, j = 0;
    int counter = 1;
    for (i = 0; i < n; i++) {
        cin >> arr[i]; // taking arr inputs
    }
    while (counter < n) {
        for (i = 0; i < n - counter; i++) {
            if (arr[i] > arr[i + 1]) {
                j = arr[i]; // swapping numbers
                arr[i] = arr[i + 1];
                arr[i + 1] = j;
            }
        }
        counter++;
    }
    for (int k : arr) std::cout << k << ' ';
}

仍然不完美,但一开始还可以。