我需要通过传递值而不是传递数组来创建一个名为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