将冒泡排序定义为函数,输入未知长度一维数组,输出排完序后的数组。输出有问题,如何解决!
去掉 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
的值,确保它是正确的。
如果问题仍然存在,请提供更多的上下文和错误信息,以便更好地帮助您。
【相关推荐】