SortViz 是一个交互式排序算法可视化教学网站,通过动画演示和代码讲解帮助学习者直观理解排序算法的运行原理。
| 算法 | 时间复杂度(平均) | 空间复杂度 | 稳定性 |
|---|---|---|---|
| 冒泡排序 Bubble Sort | O(n²) | O(1) | 稳定 |
| 选择排序 Selection Sort | O(n²) | O(1) | 不稳定 |
| 归并排序 Merge Sort | O(n log n) | O(n) | 稳定 |
# 安装依赖
npm install
# 启动服务
npm start
# 开发模式(文件变更自动重启)
npm run dev
启动后访问 http://localhost:3000
├── app.js # Express 服务器入口 ├── routes/ │ ├── index.js # 首页路由 │ └── algorithm.js # 算法详情页路由 ├── views/ │ ├── layout.pug # 页面布局模板 │ ├── index.pug # 首页 - 算法列表 │ └── algorithm.pug # 算法详情页 ├── public/ │ ├── css/style.css # 样式文件 │ └── js/sort-animation.js # 前端动画控制器 ├── algorithms/ │ ├── algorithms-meta.js # 算法元数据配置 │ ├── bubble-sort.js # 冒泡排序实现 │ ├── selection-sort.js # 选择排序实现 │ └── merge-sort.js # 归并排序实现 └── data/algorithm-descriptions/ ├── bubble-sort.md # 冒泡排序详解 ├── selection-sort.md # 选择排序详解 └── merge-sort.md # 归并排序详解
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / | 首页 |
| GET | /algorithm/:slug | 算法详情页 |
| GET | /api/algorithms | 获取所有算法元数据(JSON) |
| POST | /api/sort/:slug | 提交数组,返回排序步骤数据 |
请求:
POST /api/sort/bubble-sort
{
"array": [5, 3, 8, 1, 9, 2, 7]
}
响应:
{
"steps": [
{
"array": [5, 3, 8, 1, 9, 2, 7],
"comparing": [],
"swapping": [],
"sorted": [],
"highlightLine": -1,
"description": "初始数组状态,准备开始冒泡排序"
}
],
"meta": {
"slug": "bubble-sort",
"name": "冒泡排序",
"nameEn": "Bubble Sort"
}
}
添加新的排序算法只需以下步骤:
algorithms/ 下新建排序文件,导出排序函数和 pseudocodealgorithms/algorithms-meta.js 中添加元数据data/algorithm-descriptions/ 下添加 Markdown 讲解文件app.js 和 routes/algorithm.js 中注册新算法| 颜色 | 含义 |
|---|---|
蓝色 #4A90D9 | 默认状态 |
橙色 #F5A623 | 正在比较 |
红色 #D0021B | 正在交换/写入 |
绿色 #7ED321 | 已排序就位 |