本题目要求读入N个整数,采用冒泡排序(上升法,即每轮得到一个最小值)进行排序,输出的排序结果只是前三趟。(用C++代码写出)
时间: 2024-11-12 10:38:38 浏览: 4
求一组数组的两个最大值和两个最小值 分治法
4星 · 用户满意度95%
在C++中,你可以使用嵌套循环实现冒泡排序算法,并限制只进行三轮(即前三个趟次),因为三次就可以确定数组的前三小元素。以下是满足题目的示例代码:
```cpp
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n, bool ascending = true) {
for (int i = 0; i < n - 1; ++i) { // 主循环,遍历n-1次
bool swapped;
for (int j = 0; j < n - 1 - i; ++j) { // 内层循环,每次减少一次比较次数
if (ascending) { // 升序排列
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
swapped = true;
}
} else { // 降序排列
if (arr[j] < arr[j + 1]) {
swap(arr[j], arr[j + 1]);
swapped = true;
}
}
if (!swapped) break; // 如果一轮未发生交换,说明已有序,提前结束这一轮
}
}
}
int main() {
int N; // 请输入数字的数量
cout << "Enter the number of integers: ";
cin >> N;
int arr[N]; // 读取输入的整数
for (int i = 0; i < N; ++i)
cin >> arr[i];
bubbleSort(arr, N); // 对数组进行排序
// 输出前三趟的结果
cout << "First three passes (sorted by ascending order): ";
for (int i = 0; i < min(3, N); ++i) {
cout << arr[i] << " ";
}
return 0;
}
```
阅读全文