c++改进冒泡法,用户从控制台输入10个整数排序,输出排序过程中每一轮排序后的结果,在新一轮比较中,若没有发生元素交换,则认为排序完毕
时间: 2023-09-30 14:11:28 浏览: 73
下面是改进后的C++冒泡排序代码:
```c++
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
bool swapped = true;
for (int i = 0; i < n - 1 && swapped; i++) {
swapped = false;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
swapped = true;
}
}
// 输出当前排序结果
cout << "第" << i+1 << "轮排序结果:";
for (int k = 0; k < n; k++) {
cout << arr[k] << " ";
}
cout << endl;
}
}
int main() {
int arr[10];
cout << "请输入10个整数:";
for (int i = 0; i < 10; i++) {
cin >> arr[i];
}
bubbleSort(arr, 10);
cout << "排序完成!最终结果为:";
for (int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
首先,我们添加了一个 `swapped` 变量表示是否进行了元素交换。在每一轮排序开始前,将其设为 `true`。如果在本轮排序中没有进行元素交换,说明数组已经排好序了,程序即可退出。
其次,我们在每一轮排序结束后输出当前排序结果。
示例输出:
```
请输入10个整数:9 3 4 2 5 8 7 1 6 0
第1轮排序结果:3 4 2 5 8 7 1 6 0 9
第2轮排序结果:3 2 4 5 7 1 6 0 8 9
第3轮排序结果:2 3 4 5 1 6 0 7 8 9
第4轮排序结果:2 3 4 1 5 0 6 7 8 9
第5轮排序结果:2 3 1 4 0 5 6 7 8 9
第6轮排序结果:2 1 3 0 4 5 6 7 8 9
第7轮排序结果:1 2 0 3 4 5 6 7 8 9
第8轮排序结果:1 0 2 3 4 5 6 7 8 9
第9轮排序结果:0 1 2 3 4 5 6 7 8 9
排序完成!最终结果为:0 1 2 3 4 5 6 7 8 9
```
阅读全文