一个基于PyQt5开发的排序过程可视化小程序,内置6种常见排序算法:
- 选择排序
- 插入排序
- 冒泡排序
- 堆排序
- 归并排序
- 快速排序
可设置排序数据规模,默认为50;每次排序随机生成序列,并根据元素值大小绘制直方图(直方图的大小根据数据规模自动调整),程序运行效果图如下:
使用多线程技术,设置画图进程和排序进程,二者在信号量的控制下交替运行。排序每进行一步,便阻塞同时释放绘图信号,使得绘图进程根据当前数组的状态绘制直方图;等待绘制完毕便释放排序信号,使得排序进程得以继续。如此交替执行,直到排序完成。由于程序运行很快,所以看起来有动画的效果。