C++实现第一轮冒泡排序并统计交换次数
### 💡 问题分析 冒泡排序的基本思想是通过多次遍历数组,比较相邻元素的大小,如果顺序错误就把它们交换过来。在第一轮冒泡排序中,我们从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,就交换它们的位置,同时记录交换的次数。 ### 📝 代码实现 ```cpp #include <iostream> #include <vector> int bubbleSortFirstRound(std::vector<int>& arr) { int n = arr.size(); int swapCount = 0; // 进行第一轮冒泡排序 for (int i = 0; i < n - 1; ++i) { if (arr[i] > arr[i + 1]) { // 交换相邻元素 std::swap(arr[i], arr[i + 1]); // 交换次数加1 swapCount++; } } return swapCount; } int main() { std::vector<int> arr = {5, 3, 8, 4, 2}; int swapCount = bubbleSortFirstRound(arr); std::cout << "第一轮冒泡排序后交换次数: " << swapCount << std::endl; return 0; } ``` ### 🧐 代码解释 1. **`bubbleSortFirstRound` 函数**: - 该函数接受一个整数向量 `arr` 作为参数。 - 初始化 `swapCount` 为 0,用于记录交换次数。 - 使用 `for` 循环遍历数组,比较相邻元素,如果前一个元素大于后一个元素,则交换它们的位置,并将 `swapCount` 加 1。 - 最后返回 `swapCount`。 2. **`main` 函数**: - 定义一个整数向量 `arr`,并初始化一些元素。 - 调用 `bubbleSortFirstRound` 函数,将返回的交换次数存储在 `swapCount` 中。 - 输出第一轮冒泡排序后的交换次数。 ### ⚙️ 进阶使用指南 - **性能优化**:如果在某一轮冒泡排序中没有发生交换,说明数组已经有序,可以提前结束排序过程。 - **错误处理**:在实际应用中,需要考虑输入数组为空的情况,可以在函数开始时添加相应的判断。 - **扩展功能**:可以实现完整的冒泡排序算法,通过多次调用 `bubbleSortFirstRound` 函数,直到数组完全有序。 ### 📚 学习资源 - [C++ 官方文档](https://en.cppreference.com/w/):提供了 C++ 语言的详细文档和参考资料。 - [《C++ Primer》](https://book.douban.com/subject/10501208/):经典的 C++ 学习书籍,适合初学者和有一定基础的开发者。 ######[AI写代码神器 | 670点数解答 | 2026-05-17 21:16:54]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)391
- C++ 实现:轻松找出 n 个整数中的第二小值(字节豆包 | 260点数解答 | 2026-02-07 21:19:29)48
- C++实现找出数组中第二小的值(字节豆包 | 526点数解答 | 2026-03-27 19:40:26)27
- 找出数组中第二小值的C++代码实现(字节豆包 | 696点数解答 | 2026-03-28 19:40:41)25
- C++实现数组特定位置最小值交换并输出指定元素(字节豆包 | 607点数解答 | 2026-04-04 19:31:04)29
- C++实现找出n个整数中第二小的值(字节豆包 | 361点数解答 | 2026-04-06 20:52:02)32
- Python求数组中第二小值的三种实现方法及对比分析(DeepSeek | 1323点数解答 | 2026-05-09 19:32:54)14
- C++入门:选择查找法求数组中第二小的值(DeepSeek | 1089点数解答 | 2026-05-09 19:33:39)14
- C++实现找出数组中第二小的值(字节豆包 | 594点数解答 | 2026-05-09 20:38:56)12
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)360
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)384
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)410