AlgorithmVisualizer 项目介绍
AlgorithmVisualizer 是一个开源的可视化平台,用于动态地展示各种计算机算法的执行过程,帮助用户更好地理解算法的内部机制和运行逻辑。这个项目非常适合学生、编程初学者或任何想更直观地理解算法如何工作的开发者。
🔍 项目简介:
- 类型:开源可视化学习工具
- 主要功能:通过动画和图形动态展示算法的执行过程
- GitHub 项目地址 :https://github.com/algorithm-visualizer
🚀 主要特点:
- 多种算法支持 :
- 排序算法(如冒泡排序、快速排序、归并排序)
- 搜索算法(如二分查找、线性查找)
- 路径搜索算法(如 A*、Dijkstra、BFS、DFS)
- 数据结构操作(如栈、队列、树)
- 可交互式界面 :
- 动画效果直观展示每一步操作
- 用户可以自定义输入数据
- 可调节执行速度
- 多语言支持 :
- 后端支持 JavaScript、C++、Java 等
- 可用的语言可拓展,适合教学和实验
- Web 端运行 :
- 前端基于 React 构建,用户无需安装任何客户端程序
- 可直接在浏览器中运行和查看动画效果
- 对于编程教育:
- 直观展示抽象算法逻辑
- 提高学习兴趣和效率
- 帮助调试和理解复杂问题的解决过程
官方部署方案
前端:NodeJs-v12.22.12+React
git clone https://github.com/algorithm-visualizer/algorithm-visualizer.git
npm install
npm start
后端:NodeIs-v12.22.12+Express+Docker+AWS 服务+Linux
后端需要用到Linux系统和Docker,部署方案可以参考:
https://blog.csdn.net/weixin_64094522/article/details/148370954
本文不推荐官方部署方案,因为Docker镜像被封杀的太厉害了,没有科学上网的不用试了。
git clone https://github.com/algorithm-visualizer/server.git
npm install
sudo npm run watch
可视化原理
前端(Js动画库)--Json指令--后端(多种语言运行环境),下面的内容就是指令。
json
[
{
"args": ["20x20 Maze"],
"key": "4nif5m6s",
"method": "Array2DTracer"},
{
"args": ["Path Steps"],
"key": "m96ejo6t",
"method": "LogTracer"
},
{
"args": [["4nif5m6s", "m96ejo6t"]],
"key": "g3swasyg",
"method": "VerticalLayout"},
{
"args": ["g3swasyg"],
"key": null,
"method": "setRoot"
}
]
Python追踪器实现
官方似乎没有完成Python版本的追踪器,由于博主喜欢使用Python,于是用ChatGPT辅助完成了该追踪器,经过测试,完美复现了该有的功能。
项目地址:https://github.com/HHP999/algorithm-visualizer-Python-Tracers
改进部署方案
可以关注:https://gitee.com/xcbnh/line-code-view,目前由于参考需要暂未公开,感兴趣的可以联系我。
前端微调参数,减小了图像缩放幅度,添加了Python接口。

后端统一本地部署语言环境,不再使用Docker和AWS远程服务方案。所有的部署环境使用了Piston项目的语言包:https://github.com/engineer-man/piston/releases/tag/pkgs,后端源码也相应的做了修改,主要添加了Python的API,同时统一使用调用脚本的方式运行各类语言。
参考考脚本:
#!/bin/bash
# 设置默认路径(如果没有设置环境变量)
source "/Programs/CodeEnvs/environment"
export PATH=$CodeEnvPackagesPath/python/3.10.0/bin:$PATH
echo "Using Python at: $(which python3.10)"
script_path="$1"
if [[ ! -f "$script_path" ]]; then
echo "Error: script file '$script_path' does not exist."
exit 1
fi
python3.10 "$script_path"
rm "$script_path"