酷代码 AI
菜单
服务商

C++冒泡排序实现输入整数从大到小排序并去重

### 🍭思路分析 本题要求对输入的 `n` 个整数进行从大到小的排序并去重。我们可以使用冒泡排序算法对这些整数进行排序,然后遍历排序后的数组,去除重复的元素。 ### 🔧代码实现 ```cpp #include <iostream> using namespace std; // 冒泡排序函数,从大到小排序 void bubbleSort(int arr[], int n) { 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; } } } } // 去重函数 int removeDuplicates(int arr[], int n) { if (n == 0) return 0; int newSize = 1; for (int i = 1; i < n; i++) { if (arr[i] != arr[i - 1]) { arr[newSize] = arr[i]; newSize++; } } return newSize; } int main() { int n; cin >> n; int arr[100]; for (int i = 0; i < n; i++) { cin >> arr[i]; } // 冒泡排序 bubbleSort(arr, n); // 去重 int newSize = removeDuplicates(arr, n); // 输出结果 for (int i = 0; i < newSize; i++) { if (i > 0) cout << " "; cout << arr[i]; } cout << endl; return 0; } ``` ### 📚代码解释 1. **冒泡排序函数 `bubbleSort`**:通过两层循环,比较相邻元素的大小,如果前一个元素小于后一个元素,则交换它们的位置,从而实现从大到小的排序。 2. **去重函数 `removeDuplicates`**:遍历排序后的数组,将不重复的元素依次放到数组的前面,最后返回去重后数组的新长度。 3. **主函数 `main`**:读取输入的 `n` 和 `n` 个整数,调用 `bubbleSort` 函数进行排序,再调用 `removeDuplicates` 函数进行去重,最后输出去重后的结果。 ### ⚙️复杂度分析 - **时间复杂度**:冒泡排序的时间复杂度为 $O(n^2)$,去重的时间复杂度为 $O(n)$,因此总的时间复杂度为 $O(n^2)$。 - **空间复杂度**:只使用了常数级的额外空间,因此空间复杂度为 $O(1)$。 ### 💡开发建议 - **使用更高效的排序算法**:冒泡排序的时间复杂度较高,对于大规模数据可以考虑使用快速排序、归并排序等更高效的排序算法。 - **使用 STL 容器**:可以使用 `std::set` 或 `std::unique` 等 STL 容器和算法来简化排序和去重的过程。 ######[AI写代码神器 | 789点数解答 | 2026-05-16 20:46:08]

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