我正在尝试显示此冒泡排序的模拟,并且我使用了具有参考值的函数交换器,但是当我尝试在交换后打印它时它也打印出内存地址。我该如何解决这个问题?
void swapper(int &a, int &b) {
int temp = a;
a = b;
b = temp;
return;
}
int main(){
//Bubble sort
int arr[] = {-2, 45, 0, 11, -9};
int n = 5;
for(int step = 0; step < n-1; step++) {
for(int i = 0; i < n; i++) {
if(arr[i] > arr[i + 1])
swapper(arr[i], arr[i + 1]);
}
for(int x = 0; x < n; x++)
cout << arr[x] << " ";
cout << endl;
}
答案 0 :(得分:4)
试试这个:
#include <iostream>
using namespace std;
void swapper(int &a, int &b) {
int temp = a;
a = b;
b = temp;
return;
}
int main(){
//Bubble sort
int arr[] = {-2, 45, 0, 11, -9};
int n = 5;
for(int step = 0; step < n-1; step++) {
for(int i = 0; i+1 < n; i++) {
if(arr[i] > arr[i + 1])
swapper(arr[i], arr[i + 1]);
}
for(int x = 0; x < n; x++)
cout << arr[x] << " ";
cout << endl;
}
}
我添加了一个缺失的}
,并将内部循环的条件更改为i+1 < n
,以避免数组访问超出范围。
这是输出:
-2 0 11 -9 45
-2 0 -9 11 45
-2 -9 0 11 45
-9 -2 0 11 45
您可以通过替换
使输出更好地对齐cout << arr[x] << " ";
带
cout << setw(2) << arr[x] << " ";
并撰写
#include <iomanip>
位于文件顶部。然后输出
-2 0 11 -9 45
-2 0 -9 11 45
-2 -9 0 11 45
-9 -2 0 11 45