gpt4 book ai didi

c++ - 冒泡排序输出未排序

转载 作者:行者123 更新时间:2023-11-28 05:10:45 25 4
gpt4 key购买 nike

我的代码在放入 int main() 函数时有效,但当我将它作为另一个函数 (void bubbleSort) 实现时,输出显示它就像没有完成排序一样。

void bubbleSort(int numeros[])
{
int store = 0;
int length = ARRAY_SIZE(numeros);
for(int i=0; i<(length-1); i++)
{
for(int j=0; j<(length-i-1); j++)
{
if(numeros[j] < numeros[j+1])
{
store = numeros[j];
numeros[j] = numeros[j+1];
numeros[j+1] = store;

}
}
}
for(int m=0; m<1000; m++)
{
cout << numeros[m] <<' ';
}
}

我可能做错了什么?任何帮助将不胜感激。

最佳答案

您不能将完整数组作为参数传递给 C++ 函数,只能传递指向数组中第一个元素的指针。因此,您需要一些方法来告诉函数数组的长度。一种方法是将其作为另一个参数传递(如下所示)。有一些关于其他/更好方法的讨论和建议 here .

例如,如果您不小心将错误的 length 参数传递给这些函数,它们将开始对数组所在的内存块之后存在的任何内存进行操作。

#include <iostream>

using namespace std;

void printArray(int array[], int length) {
for(int i=0; i<length; i++) {
cout << array[i] << " ";
}
cout << endl;
}

void bubbleSort(int numeros[], int length) {
int store = 0;
for(int i=0; i<(length-1); i++) {
for(int j=0; j<(length-i-1); j++) {
if(numeros[j] < numeros[j+1]) {
store = numeros[j];
numeros[j] = numeros[j+1];
numeros[j+1] = store;
}
}
}
cout << "array at end of bubble sort: ";
printArray(numeros, length);
}

int main() {
int anArray[] = {1, 3, 2, 4, 6, 5, 10, 9, 7, 8};
int arraySize = sizeof(anArray)/sizeof(anArray[0]);
cout << "arraySize: " << arraySize << endl;
cout << "array before sort: ";
printArray(anArray, arraySize);
bubbleSort(anArray, arraySize);
cout << "array after sort: ";
printArray(anArray, arraySize);
return 0;
}

关于c++ - 冒泡排序输出未排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43554932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com