我的c++Bubble排序函数不起作用



我需要通过传递值而不是传递数组来创建一个名为bubbleSort的函数。但是bubbleSort函数根本不起作用。它仍然输出未排序的数字,这是我分配给main((中唯一数组的数字。结果应按升序显示。

#include <iostream>
using namespace std;
void bubbleSort(int, int);
int main(){   
const int size = 10;
int numbers[size] = { 100, 33, 49, 23, 84, 2, 72, 17, 82, 64 };
for (int i = 0; i < size; i++) {
cout << numbers[i] << " ";
}
for (int i = 0; i < size; i++) {
for (int j = i+1; j < size; j++) {
bubbleSort(numbers[i], numbers[j]);
}
}
cout << "n";
for (int i = 0; i < size; i++) {
cout << numbers[i] << " ";
}
return 0;
}
void bubbleSort(int i, int j) {
int temp;
if (i > j) {
temp = i;
i = j;
j = temp;
}
}

结果显示为类似于

100 33 49 23 84 2 72 17 82 64
100 33 49 23 84 2 72 17 82 64

您必须通过引用将Babel排序函数的参数函数作为调用传递给函数,以便在完成操作函数后应用到您在矿中定义的数组

类似于:

#include <iostream>
using namespace std;
void bubbleSort(int&, int&);
int main()
{
const int size = 10;
int numbers[size] = { 100, 33, 49, 23, 84, 2, 72, 17, 82, 64 };
for (int i = 0; i < size; i++)
{
cout << numbers[i] << " ";
}
for (int i = 0; i < size; i++)
{
for (int j = i+1; j < size; j++)
{
bubbleSort(numbers[i], numbers[j]);
}
}
cout << "n";
for (int i = 0; i < size; i++) {
cout << numbers[i] << " ";
}
return 0;
}
void bubbleSort(int &i, int &j) {
int temp;
if (i > j) {
temp = i;
i = j;
j = temp;
}
}
for example:
input :  100 33 49 23 84 2 72 17 82 64
out put :  2 17 23 33 49 64 72 82 84 100

如需进一步阅读,您可以访问以下网站。https://www.tutorialspoint.com/cplusplus/cpp_function_call_by_reference.htm

最新更新