冒泡排序可视化
一个基于tkinter的冒泡排序算法动态可视化工具,符合kuai客户端格式规范。
功能特点
- 动态可视化: 实时显示冒泡排序的完整执行过程
- 颜色标记: 不同颜色表示不同状态(比较、交换、已排序)
- 交互控制: 生成数组、开始/停止排序、重置功能
- 参数可调: 数组大小、数值范围、排序速度等均可自定义
- 响应流畅: 非阻塞动画,界面操作始终流畅
启动参数
| 参数名称 | 类型 | 范围 | 默认值 | 说明 |
|---|
| 数组大小 | 整数输入 | 5-50 | 20 | 要排序的数组元素个数 |
| 最小值 | 整数输入 | 1-100 | 1 | 数组元素的最小值 |
| 最大值 | 整数输入 | 10-500 | 100 | 数组元素的最大值 |
| 排序速度 | 浮点输入 | 0.1-2.0秒 | 0.5 | 每步排序间的延迟时间 |
| 窗口宽度 | 整数输入 | 600-1200像素 | 800 | 可视化窗口宽度 |
| 窗口高度 | 整数输入 | 400-800像素 | 600 | 可视化窗口高度 |
| 自动开始 | 开关 | - | 是 | 启动时自动生成并开始排序 |
| 显示数值 | 开关 | - | 是 | 在柱状图上显示具体数值 |
使用方法
通过kuai客户端
- 将脚本保存为
main.py
- 在kuai客户端中打开脚本
- 调整启动参数
- 点击运行
直接运行
python main.py "{\"array_size\":20,\"min_value\":1,\"max_value\":100}"
界面操作
控制按钮
- 生成数组: 根据参数生成新的随机数组
- 开始排序: 开始执行冒泡排序动画
- 停止排序: 中途停止排序过程
- 重置数组: 恢复到未排序的初始状态
颜色含义
- 蓝色: 未排序的元素
- 红色: 正在比较的元素
- 黄色: 正在交换的元素
- 绿色: 已排序完成的元素
算法说明
冒泡排序是一种简单的排序算法:
- 比较相邻的两个元素
- 如果顺序错误就交换它们
- 重复这个过程直到没有需要交换的元素
- 每一轮都会将最大的元素"冒泡"到正确位置
时间复杂度: O(n²)
空间复杂度: O(1)
技术特点
- 非阻塞动画: 使用
tkinter.after()替代time.sleep()
- 状态管理: 完善的排序状态控制和按钮管理
- 响应式界面: 排序过程中可自由操作窗口
- 参数验证: 自动检查和修正不合理的参数设置
系统要求
- Python 3.11.0+
- tkinter (Python标准库)
- 支持图形界面的操作系统
注意事项
- 数组大小建议不超过50个元素,以保证可视化效果
- 排序速度过快可能看不清动画过程
- 窗口大小会影响柱状图的显示效果
- 排序过程中可随时停止,不会影响程序稳定性