# cursortest **Repository Path**: chengpeng1/cursortest ## Basic Information - **Project Name**: cursortest - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-16 - **Last Updated**: 2025-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 冒泡排序 Python 程序 这是一个完整的冒泡排序算法实现,包含基础版本和优化版本。 ## 功能特点 ### 1. 基础冒泡排序 (`bubble_sort`) - 实现经典的冒泡排序算法 - 通过相邻元素比较和交换来排序 - 每轮排序后显示中间结果 - 时间复杂度:O(n²) - 空间复杂度:O(1) ### 2. 优化版冒泡排序 (`bubble_sort_optimized`) - 在基础版本上增加了提前退出机制 - 如果某一轮没有发生交换,说明已经排序完成 - 对于已排序或接近排序的数组,性能更好 - 时间复杂度:O(n²),但在最好情况下为 O(n) ## 算法原理 冒泡排序是一种简单的排序算法,其工作原理如下: 1. **比较相邻元素**:从第一个元素开始,依次比较相邻的两个元素 2. **交换位置**:如果前一个元素大于后一个元素,则交换它们的位置 3. **重复过程**:重复上述步骤,直到没有需要交换的元素 4. **完成排序**:最大的元素会"冒泡"到数组的末尾 ## 使用方法 ### 运行程序 ```bash python bubble_sort.py ``` ### 程序功能 1. **自动测试**:程序会自动运行多个测试用例 - 普通数组排序 - 已排序数组(测试优化版本) - 逆序数组排序 - 包含重复元素的数组排序 2. **交互式测试**:用户可以输入自己的数组进行排序 ### 示例输出 ``` === 冒泡排序演示 === 原始数组: [64, 34, 25, 12, 22, 11, 90] 开始冒泡排序... 第 1 轮排序后: [34, 25, 12, 22, 11, 64, 90] 第 2 轮排序后: [25, 12, 22, 11, 34, 64, 90] 第 3 轮排序后: [12, 22, 11, 25, 34, 64, 90] 第 4 轮排序后: [12, 11, 22, 25, 34, 64, 90] 第 5 轮排序后: [11, 12, 22, 25, 34, 64, 90] 第 6 轮排序后: [11, 12, 22, 25, 34, 64, 90] 第 7 轮排序后: [11, 12, 22, 25, 34, 64, 90] 排序结果: [11, 12, 22, 25, 34, 64, 90] ``` ## 代码结构 - `bubble_sort(arr)`: 基础冒泡排序实现 - `bubble_sort_optimized(arr)`: 优化版冒泡排序实现 - `main()`: 主函数,包含测试用例和用户交互 ## 算法复杂度 | 情况 | 时间复杂度 | 空间复杂度 | |------|------------|------------| | 最好情况 | O(n) | O(1) | | 平均情况 | O(n²) | O(1) | | 最坏情况 | O(n²) | O(1) | ## 适用场景 - 教学演示排序算法原理 - 小规模数据排序 - 对稳定性有要求的场景(冒泡排序是稳定排序) - 作为其他排序算法的基准测试 ## 注意事项 - 对于大规模数据,建议使用更高效的排序算法(如快速排序、归并排序等) - 程序使用 `.copy()` 方法避免修改原始数组 - 包含完整的错误处理机制