这是一个可以快速比较排序算法性能的程序!

· · 科技·工程

b站介绍视频: 视频链接:https://www.bilibili.com/video/BV1Sta867EHs

欢迎三连喵!

github 仓库:https://github.com/ShootingStar3248/SortVisualizer

欢迎点亮 star 和提交 PR。

以下部分为项目 README 原文。

排序算法可视化对比 · PyQt5

一个把多个排序算法放在同一拍上跑给眼睛看的对比工具:每个算法一行彩虹色带, 所有算法每推进相同数量的字节码就一起停一下、一起刷新,于是谁的操作少、谁先排好, 一眼就能看出来。

它统计的是什么

「操作」的粒度是 Python 字节码条数,不是只看数组读写:

所以「冒泡为什么比插入慢这么多」「希尔排序的 gap 序列值不值」这类问题, 在这里可以直接横向比较。

功能

运行

pip install -r requirements.txt
python main.py

需要 Python 3.7+ 和 PyQt5(开发环境为 Python 3.10 + PyQt5 5.15)。

图标

改完 SVG 重新生成一次(需要 PyQt5 和 Pillow):

python tools/make_icon.py

目录结构

main.py                 程序入口,套上样式表、图标后开窗
requirements.txt        依赖(PyQt5)
sort-config.json        一份示例配置(保存 / 导入 用的是同一套格式)
assets/
    icon.svg            图标源文件(改这个)
    icon.ico            Windows 图标,由 make_icon.py 生成
tools/
    make_icon.py        SVG → ICO + sortvisual/icon.py
sortvisual/
    executor.py         运行线程 + 同步闸门(RunController / AlgorithmRunner)
    tracked_array.py    记账用的数组(读写回调、切片赋值、内置 sort 的比较次数折算)
    panels.py           彩虹条、带行号的代码框、左侧碰撞箱、高度把手、算法面板
    main_window.py      工具栏、面板容器、运行调度、配置读写
    icon.py             内嵌的 SVG 与窗口图标(自动生成)
    theme.py            配色、样式表、Python 语法高亮

配置格式

保存 / 导入 用的就是普通 JSON:

{
  "version": 1,
  "settings": { "size": 500, "seed": 682739, "ops_per_frame": 512, "delay_ms": 0 },
  "algorithms": [ { "name": "冒泡排序", "code": "def sort(a):\n    ...\n" } ]
}

已知取舍

许可证

GNU Affero General Public License v3.0