C++ 实现冒泡排序从大到小排序并去重
以下是使用 C++ 实现冒泡排序从大到小排序并去重的代码: ```cpp #include <iostream> #include <vector> #include <algorithm> // 冒泡排序函数,从大到小排序 void bubbleSort(std::vector<int>& arr) { int n = arr.size(); for (int i = 0; i < n - 1; ++i) { for (int j = 0; j < n - i - 1; ++j) { if (arr[j] < arr[j + 1]) { // 交换 arr[j] 和 arr[j+1] int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } // 去重函数 void removeDuplicates(std::vector<int>& arr) { if (arr.empty()) return; std::vector<int> result; result.push_back(arr[0]); for (int i = 1; i < arr.size(); ++i) { if (arr[i] != result.back()) { result.push_back(arr[i]); } } arr = result; } int main() { int n; std::cin >> n; std::vector<int> numbers(n); // 读取输入的 n 个整数 for (int i = 0; i < n; ++i) { std::cin >> numbers[i]; } // 进行冒泡排序 bubbleSort(numbers); // 去重 removeDuplicates(numbers); // 输出结果 for (int i = 0; i < numbers.size(); ++i) { if (i != 0) { std::cout << " "; } std::cout << numbers[i]; } std::cout << std::endl; return 0; } ``` ### 代码解释 1. **冒泡排序函数 `bubbleSort`**:通过两层循环比较相邻元素,如果前一个元素小于后一个元素,则交换它们的位置,从而实现从大到小的排序。 2. **去重函数 `removeDuplicates`**:遍历排序后的数组,将不重复的元素添加到新的数组中,最后将新数组赋值给原数组。 3. **主函数 `main`**:读取输入的整数 `n` 和 `n` 个整数,调用 `bubbleSort` 函数进行排序,调用 `removeDuplicates` 函数去重,最后输出排序并去重后的结果。 ### 开发建议 1. **性能优化**:冒泡排序的时间复杂度为 $O(n^2)$,对于大规模数据可以考虑使用更高效的排序算法,如快速排序、归并排序等。 2. **错误处理**:可以添加对输入的合法性检查,例如检查输入的 `n` 是否在 `1` 到 `100` 之间。 3. **代码复用**:将排序和去重的功能封装成独立的函数,提高代码的复用性。 ### 学习资源 - C++ 官方文档:https://en.cppreference.com/w/ - 《C++ Primer》:经典的 C++ 学习书籍,适合初学者和进阶者。 ######[AI写代码神器 | 779点数解答 | 2026-03-20 19:43:19]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)342
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)309
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)356
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)347
- sys_module 表结构与 Java 实体类 SysModule 详解(字节豆包 | 252点数解答 | 2025-04-09 10:54:17)212
- MySQL表与Java类:`sys_role` 的创建及实体类定义全解析(字节豆包 | 168点数解答 | 2025-04-10 14:39:47)214
- C++ 破解“国王游戏”弱化版:贪心排序算法巧求最少最大奖赏(DeepSeek | 550点数解答 | 2025-04-28 18:16:50)395
- 巧妙贪心排序:解决国王游戏中大臣奖赏最大化问题(DeepSeek | 1002点数解答 | 2025-05-10 20:58:15)191
- C++ 实现:用贪心算法解国王游戏(弱化版),使大臣获赏最大值最小(DeepSeek | 507点数解答 | 2025-05-10 20:59:01)173
- 6 - 4 军事体能成绩冒泡排序:输入轮数输出中间结果的实现(字节豆包 | 250点数解答 | 2025-12-25 15:42:51)40
- 陆军工程大学学员军事体能成绩冒泡排序:按指定轮数输出中间结果(字节豆包 | 250点数解答 | 2025-12-25 15:52:30)53
- Python 实现:四位数重组求最大最小数差值(字节豆包 | 144点数解答 | 2026-02-01 12:49:54)23