基于 Qt Widgets 的排序算法练习:生成一组整数,单项排序可查看排序结果与耗时;“全过一遍”依次运行五种实现以比较耗时。
flowchart TD
A[生成默认 50,000 个 rand 整数] --> B{选择操作}
B -->|单项| C[冒泡按钮对应实现]
B -->|单项| D[快速排序]
B -->|单项| E[希尔排序]
B -->|单项| F[堆排序]
B -->|单项| G[基数排序]
B -->|全过一遍| H[复制输入并顺序计时五种实现]
C --> I[单项结果框显示排序列表与耗时]
D --> I
E --> I
F --> I
G --> I
H --> J[记录耗时,不显示排序列表]
基于源码绘制的算法示意 / 非运行截图;仓库没有 UI 图片资源。
- 生成默认数量为 50,000 的随机整数,并显示未排序列表。
- 单独运行冒泡(按钮名称)、快速、希尔、堆或基数排序。
- 点击 全过一遍,在同一组输入数据的五个副本上依次运行五种实现并记录耗时;该操作不会把排序结果显示到结果框。
- 单项排序会显示结果和毫秒计时;耗时仅供本机练习参考,不是跨机器性能基准。
- Qt Creator 与包含 Qt Widgets 的 Desktop Kit。
- 与所选 Qt Kit 匹配的 qmake 和 C++11 编译器(MinGW 或 MSVC)。
- 打开
Sort.pro。 - 选择并配置已安装的 Desktop Kit。
- 构建项目并运行。
在已配置 Qt/MinGW 的命令行中,从仓库根目录执行:
mkdir build
cd build
qmake ..\Sort.pro
mingw32-make使用 MSVC Kit 时,在对应的 Qt/MSVC 开发者命令行中运行 qmake,并以 nmake 替换 mingw32-make。
- 核心实现位于
mainwindow.cpp;输入使用QVector<int>,界面通过 Qt Widgets 显示输入、输出与计时。 - UI 标为“冒泡排序”的函数并非传统相邻交换式冒泡排序,而是逐项与后续元素比较并交换。
- 基数排序当前循环只进行
d - 1轮(d为最大值位数),可能漏掉最高位;实现也未覆盖负数,不能假定结果始终有序。 - 生成数量固定为 50,000;随机数由
rand()产生。算法计时不包含结果列表的界面输出;生成耗时包含逐项更新文本框的开销,计时仅供本机参考,不是性能结论。 - 本机没有 Qt Creator 或 qmake,未构建或运行项目;仓库没有自动化测试目标或预编译发布包,因此排序结果正确性和实际性能均未验证。