酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++实现有重复元素的计数排序:解决P3697排序问题

以下是解决这个问题的 C++ 代码: ```cpp #include <iostream> using namespace std; const int MAX_NUM = 1000; int main() { int n; // 创建一个长度为 1001 的数组,用于记录每个数字出现的次数 int count[MAX_NUM + 1] = {0}; // 读取输入的序列个数 cin >> n; // 读取每个数字,并统计其出现的次数 for (int i = 0; i < n; ++i) { int num; cin >> num; count[num]++; } // 输出排序后的结果 bool first = true; for (int i = 0; i <= MAX_NUM; ++i) { for (int j = 0; j < count[i]; ++j) { if (!first) { cout << " "; } cout << i; first = false; } } cout << endl; return 0; } ``` ### 代码解释 1. **定义常量和数组**: - `MAX_NUM` 定义了数字的最大值,即 1000。 - `count` 数组用于记录每个数字出现的次数,初始值都为 0。 2. **读取数据**: - 使用 `cin >> n` 读取序列的个数。 - 通过循环读取每个数字,并将其对应的 `count` 数组元素加 1。 3. **输出排序结果**: - 遍历 `count` 数组,对于每个非零的 `count[i]`,输出 `i` 共 `count[i]` 次。 - 使用 `first` 变量来控制输出格式,避免在第一个数字前输出多余的空格。 ######[AI问答 | 449点数解答 | 2026-08-22 20:00:58]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]