c++将冒泡排序定义成函数文件

将冒泡排序定义为函数,输入未知长度一维数组,输出排完序后的数组。输出有问题,如何解决!

img

img

img

img

去掉 n = sizeof(arr) /sizeof(arr[0]);
这一行,而是改为主程序传入n

传递参数的时候,数组长度会丢失

上面两位佬说得对,数组传进来的只是头部的地址,用sizeof是求不出长度的

【以下回答由 GPT 生成】

问题是在冒泡排序函数中出现错误。问题出现在临时变量temp的使用上,导致排序结果不正确。正确的冒泡排序函数应该是这样的:

#include <iostream>
using namespace std;

void bubbleSort(int arr[], int n) {
  for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        int temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
}

int main() {
  int arr[] = {64, 34, 25, 12, 22, 11, 90};
  int n = sizeof(arr) / sizeof(arr[0]);

  bubbleSort(arr, n);

  cout << "Sorted array: \n";
  for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }

  return 0;
}

可以看到代码与您提供的代码基本相同。

如果问题还存在,可能是因为其他原因。例如,传递给函数的数组长度可能不正确,导致越界访问。在函数调用bubbleSort(arr, n);之前,您可以输出n的值,确保它是正确的。

如果问题仍然存在,请提供更多的上下文和错误信息,以便更好地帮助您。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^