数组排序。改进冒泡法,使之在新一轮比较中,若没有发生元素交换,则认为已排序完毕
时间: 2024-03-02 16:53:19 浏览: 62
好的,以下是改进后的冒泡排序代码,当一轮排序中没有发生元素交换时,即认为已排序完毕,不再进行下一轮排序:
```cpp
#include<iostream>
using namespace std;
int main() {
int nums[10];
// 从控制台输入10个整数
for(int i=0; i<10; i++) {
cout << "请输入第" << i+1 << "个整数:";
cin >> nums[i];
}
// 改进的冒泡排序
int n = 10;
bool flag = true; // 标记是否发生元素交换
for(int i=0; i<n-1 && flag; i++) {
flag = false;
for(int j=0; j<n-i-1; j++) {
if(nums[j] > nums[j+1]) {
swap(nums[j], nums[j+1]);
flag = true; // 发生元素交换,标记为true
}
}
// 输出每轮排序后的结果
cout << "第" << i+1 << "轮排序后的结果:";
for(int k=0; k<10; k++) {
cout << nums[k] << " ";
}
cout << endl;
}
// 输出最终排序结果
cout << "排序后的结果:";
for(int i=0; i<10; i++) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
```
你可以将以上代码复制到C++编译器中执行,它会按照你要求的方式排序并输出结果。
阅读全文