c++4.编写程序实现3.3.1的计数排序问题,输入待排序数据,输出排序后的结果。
时间: 2024-09-19 14:15:51 浏览: 42
在C++中,你可以使用计数排序算法对整数数组进行排序,这是一个非比较型排序算法,特别适合处理整数范围较小的情况。以下是使用C++实现3.3.1计数排序的一个简单示例:
```cpp
#include <iostream>
#include <vector>
// 计数排序函数
void countingSort(std::vector<int>& arr) {
// 获取输入数组的最大值
int max_val = *std::max_element(arr.begin(), arr.end());
// 初始化计数向量,大小为最大值加一
std::vector<int> count(max_val + 1, 0);
// 统计每个元素出现的次数
for (int num : arr) {
count[num]++;
}
// 更新计数向量,使其包含累计计数
for (int i = 1; i < count.size(); ++i) {
count[i] += count[i - 1];
}
// 将原始数组按照计数逆序填充到新数组
std::vector<int> output(arr.size());
for (int i = arr.size() - 1, output_index = 0; i >= 0; --i) {
output[output_index++] = arr[i];
count[arr[i]]--;
if (count[arr[i]] == 0) {
--output_index;
}
}
// 替换原数组
arr.swap(output);
}
int main() {
std::cout << "请输入待排序的数据(以空格分隔):" << std::endl;
std::string input_str;
std::getline(std::cin, input_str);
std::istringstream iss(input_str);
std::vector<int> arr;
int number;
while (iss >> number) {
arr.push_back(number);
}
countingSort(arr);
std::cout << "排序后的结果是:";
for (int num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
阅读全文