描述: 输入一组≥0的整数,① 从大到小排序后输出; ② 若排序后有连续整数,只输出连续数中最大和最小的两个数 (注意:输入的所有整数应各不相同,即:不用考虑两个整数相同的情况)。 输入:从键盘输入,一组≥0的整数,不考虑非法输入。 输出:排序后数据,各个整数之间可以以逗号(",")分隔。
时间: 2024-03-09 18:46:16 浏览: 21
好的,可以使用STL中的sort函数来对输入的整数进行排序,然后再遍历排序后的数组,找出其中的连续整数。具体步骤如下:
1. 读入一组整数,保存到vector<int>中。
2. 使用sort函数对vector<int>进行排序。
3. 遍历排序后的数组,找出其中的连续整数。
4. 输出排序后的数组,如果有连续整数,则只输出其最大值和最小值。
下面是具体的C++代码实现:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> nums;
int num;
while (cin >> num) {
nums.push_back(num);
}
sort(nums.begin(), nums.end(), greater<int>()); // 从大到小排序
int n = nums.size();
for (int i = 0; i < n; ++i) {
int j = i + 1;
while (j < n && nums[j] == nums[j-1] - 1) ++j; // 查找连续整数
if (j - i > 1) { // 有连续整数
cout << nums[i] << "," << nums[j-1] << ",";
i = j - 1;
} else {
cout << nums[i] << ",";
}
}
cout << endl;
return 0;
}
```
这个程序的时间复杂度是O(nlogn),其中n是输入的整数个数,因为排序的时间复杂度是O(nlogn)。