酷代码 AI
菜单
服务商

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]

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