C++冒泡排序实现星耀结晶从大到小排序及开发建议
### 🌠解题思路 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 ### 💻代码实现 ```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 main() { int n; cin >> n; int arr[100]; for (int i = 0; i < n; i++) { cin >> arr[i]; } // 调用冒泡排序函数 bubbleSort(arr, n); // 输出排序后的数组 for (int i = 0; i < n; i++) { if (i > 0) { cout << " "; } cout << arr[i]; } cout << endl; return 0; } ``` ### 📝代码解释 1. **冒泡排序函数 `bubbleSort`**: - 外层循环 `for (int i = 0; i < n - 1; i++)` 控制排序的轮数,总共需要进行 `n - 1` 轮。 - 内层循环 `for (int j = 0; j < n - i - 1; j++)` 用于比较相邻的元素,如果前一个元素小于后一个元素,则交换它们的位置。 2. **主函数 `main`**: - 首先读取结晶的数量 `n`。 - 然后读取每个结晶的大小,并存储在数组 `arr` 中。 - 调用 `bubbleSort` 函数对数组进行排序。 - 最后输出排序后的数组,相邻元素之间用空格隔开。 ### 🚀进阶使用指南 - **性能优化**:可以添加一个标志位,当某一轮没有发生交换时,说明数组已经有序,可以提前结束排序。 ```cpp void bubbleSort(int arr[], int n) { bool swapped; for (int i = 0; i < n - 1; i++) { swapped = false; for (int j = 0; j < n - i - 1; j++) { if (arr[j] < arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; swapped = true; } } if (!swapped) { break; } } } ``` - **错误处理**:可以添加输入验证,确保输入的结晶数量 `n` 在 `1 < n < 100` 的范围内。 ```cpp if (n <= 1 || n >= 100) { cout << "输入的结晶数量不在有效范围内。" << endl; return 1; } ``` ### 📚学习资源 - [C++ 官方文档](https://en.cppreference.com/w/):提供了 C++ 语言的详细文档和参考资料。 - 《C++ Primer》:一本经典的 C++ 学习书籍,适合初学者和有一定基础的开发者。 ### 💡开发建议 - 注意数组越界问题,确保数组的下标在合法范围内。 - 可以将排序逻辑封装成函数,提高代码的复用性。 - 对于大规模数据的排序,冒泡排序的效率较低,可以考虑使用更高效的排序算法,如快速排序、归并排序等。 ######[AI写代码神器 | 968点数解答 | 2026-03-27 19:20:31]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)346
- C++实现计算字符矩阵中十字图形个数(字节豆包 | 333点数解答 | 2026-03-14 19:46:38)22
- C++实现矩阵中十字图形个数的计算(字节豆包 | 847点数解答 | 2026-03-14 20:19:15)22
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)316
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)358
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)352
- sys_module 表结构与 Java 实体类 SysModule 详解(字节豆包 | 252点数解答 | 2025-04-09 10:54:17)214
- MySQL表与Java类:`sys_role` 的创建及实体类定义全解析(字节豆包 | 168点数解答 | 2025-04-10 14:39:47)215
- C++ 破解“国王游戏”弱化版:贪心排序算法巧求最少最大奖赏(DeepSeek | 550点数解答 | 2025-04-28 18:16:50)399
- 巧妙贪心排序:解决国王游戏中大臣奖赏最大化问题(DeepSeek | 1002点数解答 | 2025-05-10 20:58:15)194
- C++ 实现:用贪心算法解国王游戏(弱化版),使大臣获赏最大值最小(DeepSeek | 507点数解答 | 2025-05-10 20:59:01)175
- 6 - 4 军事体能成绩冒泡排序:输入轮数输出中间结果的实现(字节豆包 | 250点数解答 | 2025-12-25 15:42:51)42