更新记录
1.0.0(2026-06-12)
下载此版本
1.0.0
平台兼容性
uni-app(5.07)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
- |
√ |
- |
- |
- |
- |
- |
- |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| - |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
算法合集 (Algorithm Collection)
涵盖 12 大类 100+ 常用算法的纯 JavaScript 实现,适合学习、面试准备和项目集成。
[
]()
功能概述
算法合集是一个综合性的 JavaScript 算法库插件,涵盖从基础排序到高级机器学习的 12 大类别、100+ 常见算法的完整实现。每个算法以独立的模块化文件组织,附带详细的时间/空间复杂度注释,适合学习参考和实际项目集成。
插件附带一个交互式 Demo 页面,可以在 H5 / App 端直观地查看每个算法的运行效果和执行时间。
算法类别
| 序号 |
类别 |
算法数量 |
包含算法 |
| 1 |
排序 (Sorting) |
10 |
冒泡、选择、插入、希尔、归并、快速、堆、计数、桶、基数排序 |
| 2 |
搜索 (Searching) |
6 |
线性、二分、插值、斐波那契、跳跃、指数搜索 |
| 3 |
动态规划 (DP) |
8 |
斐波那契DP、0-1背包、LCS、LIS、编辑距离、零钱兑换、矩阵链、最大子数组 |
| 4 |
贪心 (Greedy) |
5 |
活动选择、哈夫曼编码、分数背包、最少硬币、区间调度 |
| 5 |
回溯 (Backtracking) |
7 |
N皇后、数独、全排列、组合、子集和、图着色、哈密顿回路 |
| 6 |
分治 (Divide & Conquer) |
5 |
归并排序、快速排序、二分搜索、最近点对、最大子数组 |
| 7 |
图论 (Graph) |
9 |
BFS、DFS、Dijkstra、Bellman-Ford、Floyd-Warshall、Prim、Kruskal、拓扑排序、A* |
| 8 |
字符串匹配 (String) |
6 |
KMP、Boyer-Moore、Rabin-Karp、Z算法、Manacher回文、Trie |
| 9 |
数学计算 (Math) |
8 |
GCD、LCM、素数筛、快速幂、阶乘、组合数、素数判断、矩阵乘法 |
| 10 |
树结构 (Tree) |
8 |
线段树、树状数组、并查集、Trie、BST、AVL树、堆、二叉树遍历 |
| 11 |
机器学习 (ML) |
6 |
线性回归、逻辑回归、K-Means、KNN、决策树、朴素贝叶斯 |
| 12 |
压缩加密 (Crypto) |
8 |
RLE、哈夫曼压缩、LZW、凯撒密码、Base64、简易RSA、简易MD5、维吉尼亚密码 |
安装与使用
方式一:插件市场导入
- 在 uni-app 插件市场搜索 "算法合集"
- 点击「导入插件」到你的 uni-app 项目
- HBuilderX 会自动将插件导入到
uni_modules/algorithm-collection/ 目录
方式二:手动拷贝
将 js_sdk/ 目录拷贝到你的项目中即可使用。
方式三:直接使用(本项目内)
本项目已集成插件,Demo 页面可直接运行查看。
快速开始
// 导入全部算法(推荐:命名空间方式,避免命名冲突)
import { sorting, searching, dynamicProgramming } from '@/uni_modules/algorithm-collection/js_sdk';
// 排序
const sorted = sorting.quickSort([3, 1, 4, 1, 5, 9, 2, 6]);
// => [1, 1, 2, 3, 4, 5, 6, 9]
// 搜索
const index = searching.binarySearch([1, 3, 5, 7, 9], 7);
// => 3
// 动态规划 - 斐波那契
const fib = dynamicProgramming.fibonacciDP(10);
// => 55
// 动态规划 - 最长公共子序列
const lcs = dynamicProgramming.lcs('ABCBDAB', 'BDCAB');
// => { length: 4, sequence: 'BCAB' }
// 按类别导入(仅导入需要的类别)
import { graph, treeStructure, math } from '@/uni_modules/algorithm-collection/js_sdk';
// 图论 - Dijkstra 最短路径
const result = graph.dijkstra(5, [[0,1,4],[0,2,1],[1,3,2],[2,1,1],[2,3,5],[3,4,3]], 0);
// => { distances: {0:0, 1:2, 2:1, 3:4, 4:7}, path: {...} }
// 数学计算
math.gcd(48, 18); // => 6
math.fastPow(2, 10); // => 1024
math.primeSieve(50); // => [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
// 导入单个算法(按需加载)
import { quickSort } from '@/uni_modules/algorithm-collection/js_sdk/sorting/quick-sort';
import { kmp } from '@/uni_modules/algorithm-collection/js_sdk/string-matching/kmp';
API 参考
1. 排序算法 (sorting)
| 函数 |
说明 |
时间复杂度 |
空间复杂度 |
bubbleSort(arr, order?) |
冒泡排序 |
O(n^2) avg, O(n) best |
O(1) |
selectionSort(arr, order?) |
选择排序 |
O(n^2) |
O(1) |
insertionSort(arr, order?) |
插入排序 |
O(n^2) avg, O(n) best |
O(1) |
shellSort(arr, order?) |
希尔排序 |
O(n log^2 n) avg |
O(1) |
mergeSort(arr, order?) |
归并排序 |
O(n log n) |
O(n) |
quickSort(arr, order?) |
快速排序 |
O(n log n) avg |
O(log n) |
heapSort(arr, order?) |
堆排序 |
O(n log n) |
O(1) |
countingSort(arr, order?) |
计数排序 |
O(n + k) |
O(k) |
bucketSort(arr, order?) |
桶排序 |
O(n + k) avg |
O(n + k) |
radixSort(arr, order?) |
基数排序 |
O(d * (n + k)) |
O(n + k) |
order?: 'asc' | 'desc' 默认升序
2. 搜索算法 (searching)
| 函数 |
说明 |
时间复杂度 |
空间复杂度 |
linearSearch(arr, target) |
线性搜索 |
O(n) |
O(1) |
binarySearch(arr, target) |
二分搜索 |
O(log n) |
O(1) |
interpolationSearch(arr, target) |
插值搜索 |
O(log log n) avg |
O(1) |
fibonacciSearch(arr, target) |
斐波那契搜索 |
O(log n) |
O(1) |
jumpSearch(arr, target) |
跳跃搜索 |
O(sqrt(n)) |
O(1) |
exponentialSearch(arr, target) |
指数搜索 |
O(log n) |
O(1) |
3. 动态规划 (dynamicProgramming)
| 函数 |
说明 |
时间复杂度 |
空间复杂度 |
fibonacciDP(n) |
斐波那契数列 |
O(n) |
O(n) |
knapsack01(weights, values, capacity) |
0-1背包问题 |
O(n * W) |
O(n * W) |
lcs(str1, str2) |
最长公共子序列 |
O(m * n) |
O(m * n) |
lis(arr) |
最长递增子序列 |
O(n log n) |
O(n) |
editDistance(str1, str2) |
编辑距离 |
O(m * n) |
O(m * n) |
coinChange(coins, amount) |
零钱兑换 |
O(n * amount) |
O(amount) |
matrixChainOrder(dims) |
矩阵链乘法 |
O(n^3) |
O(n^2) |
maxSubarray(arr) |
最大子数组和 |
O(n) |
O(1) |
4. 贪心算法 (greedy)
| 函数 |
说明 |
时间复杂度 |
activitySelection(activities) |
活动选择问题 |
O(n log n) |
huffmanCoding(text) |
哈夫曼编码 |
O(n log n) |
fractionalKnapsack(items, capacity) |
分数背包问题 |
O(n log n) |
minimumCoins(coins, amount) |
最少硬币问题 |
O(n) |
intervalScheduling(intervals) |
区间调度问题 |
O(n log n) |
5. 回溯算法 (backtracking)
| 函数 |
说明 |
时间复杂度 |
nQueens(n) |
N皇后问题,返回所有解 |
O(n!) |
solveSudoku(board) |
数独求解器 |
O(9^m) |
permutations(arr) |
全排列生成 |
O(n * n!) |
combinations(arr, k) |
组合生成 |
O(C(n, k)) |
subsetSum(arr, target) |
子集和问题 |
O(2^n) |
graphColoring(graph, m) |
图着色问题 |
O(k^n) |
hamiltonianCycle(graph) |
哈密顿回路 |
O(n!) |
6. 分治算法 (divideAndConquer)
| 函数 |
说明 |
时间复杂度 |
mergeSort(arr) |
归并排序 |
O(n log n) |
quickSort(arr) |
快速排序 |
O(n log n) avg |
binarySearchDC(arr, target) |
二分搜索 |
O(log n) |
closestPair(points) |
最近点对 |
O(n log n) |
maxSubarrayDC(arr) |
最大子数组 |
O(n log n) |
7. 图论算法 (graph)
| 函数 |
说明 |
时间复杂度 |
bfs(V, edges, start) |
广度优先搜索 |
O(V + E) |
dfs(V, edges, start) |
深度优先搜索 |
O(V + E) |
dijkstra(V, edges, start) |
Dijkstra最短路径 |
O((V+E) log V) |
bellmanFord(V, edges, start) |
Bellman-Ford |
O(V * E) |
floydWarshall(V, edges) |
Floyd-Warshall全源最短路径 |
O(V^3) |
prim(V, edges) |
Prim最小生成树 |
O((V+E) log V) |
kruskal(V, edges) |
Kruskal最小生成树 |
O(E log E) |
topologicalSort(V, edges) |
拓扑排序 |
O(V + E) |
aStar(V, edges, start, end, heuristic?) |
A*寻路 |
O(E) |
8. 字符串匹配 (stringMatching)
| 函数 |
说明 |
时间复杂度 |
kmp(text, pattern) |
KMP字符串匹配 |
O(n + m) |
boyerMoore(text, pattern) |
Boyer-Moore匹配 |
O(n/m) best |
rabinKarp(text, pattern) |
Rabin-Karp匹配 |
O(n + m) avg |
zAlgorithm(str) |
Z算法(Z数组计算) |
O(n) |
manacher(str) |
Manacher最长回文子串 |
O(n) |
Trie (class) |
Trie前缀树 |
O(L) per query |
9. 数学计算 (math)
| 函数 |
说明 |
时间复杂度 |
gcd(a, b) |
最大公约数(欧几里得) |
O(log min(a,b)) |
lcm(a, b) |
最小公倍数 |
O(log min(a,b)) |
primeSieve(n) |
埃拉托斯特尼素数筛 |
O(n log log n) |
fastPow(base, exp) |
快速幂(二分幂) |
O(log n) |
factorial(n) |
阶乘计算 |
O(n) |
combination(n, k) |
组合数 C(n, k) |
O(k) |
isPrime(n) |
素数判断 |
O(sqrt(n)) |
matrixMultiply(A, B) |
矩阵乘法 |
O(n^3) |
10. 树结构 (treeStructure)
| 类/函数 |
说明 |
复杂度 |
SegmentTree |
线段树(区间查询/更新) |
O(log n) |
FenwickTree |
树状数组(前缀和) |
O(log n) |
UnionFind |
并查集(路径压缩) |
O(alpha(n)) |
Trie |
前缀树 |
O(L) per ops |
BST |
二叉搜索树 |
O(h) |
AVLTree |
AVL平衡树 |
O(log n) |
Heap |
堆(优先队列) |
O(log n) |
preorderTraversal(root) 等 |
二叉树遍历 |
O(n) |
11. 机器学习 (machineLearning)
| 类/函数 |
说明 |
算法 |
linearRegression(X, y) |
线性回归 |
正规方程法 |
logisticRegression(X, y, lr, iters) |
逻辑回归 |
梯度下降 |
kmeans(points, k) |
K-Means聚类 |
Lloyd算法 |
knn(trainX, trainY, point, k) |
KNN分类 |
欧氏距离投票 |
DecisionTree |
决策树 |
Gini不纯度 |
NaiveBayes |
朴素贝叶斯 |
高斯朴素贝叶斯 |
12. 压缩加密 (compressionCrypto)
| 函数 |
说明 |
操作 |
rleEncode(str) / rleDecode(encoded) |
游程编码 |
压缩/解压 |
huffmanEncode(text) / huffmanDecode(encoded, codes) |
哈夫曼编码 |
压缩/解压 |
lzwEncode(str) / lzwDecode(codes) |
LZW压缩 |
压缩/解压 |
caesarCipher(text, shift) |
凯撒密码 |
加密/解密 |
base64Encode(str) / base64Decode(encoded) |
Base64编码 |
编码/解码 |
simpleRSA(message) |
简易RSA |
加密/解密 |
simpleMD5(str) |
简易MD5 |
哈希 |
vigenereCipher(text, key) |
维吉尼亚密码 |
加密/解密 |
复杂度速查表(精选)
| 类别 |
算法 |
最优时间 |
平均时间 |
最差时间 |
空间 |
| 排序 |
冒泡排序 |
O(n) |
O(n^2) |
O(n^2) |
O(1) |
| 排序 |
快速排序 |
O(n log n) |
O(n log n) |
O(n^2) |
O(log n) |
| 排序 |
归并排序 |
O(n log n) |
O(n log n) |
O(n log n) |
O(n) |
| 排序 |
堆排序 |
O(n log n) |
O(n log n) |
O(n log n) |
O(1) |
| 搜索 |
二分搜索 |
O(1) |
O(log n) |
O(log n) |
O(1) |
| 图论 |
Dijkstra |
-- |
O((V+E)log V) |
O((V+E)log V) |
O(V) |
| 图论 |
Floyd-Warshall |
-- |
O(V^3) |
O(V^3) |
O(V^2) |
| 字符串 |
KMP |
O(n) |
O(n+m) |
O(n+m) |
O(m) |
| 数学 |
GCD |
-- |
O(log n) |
O(log n) |
O(1) |
Demo 演示
插件包含一个完整的交互式 Demo 页面 (pages/index/index.vue):
- 12 个类目标签切换
- 100+ 算法即时选择
- 实时显示时间/空间复杂度
- 智能输入解析(数组、搜索、图、字符串等格式)
- 精确执行计时(ms 级)
- 结果 JSON 美化输出
项目结构
uni_modules/algorithm-collection/
├── package.json # 插件市场元数据
├── readme.md # 本文档
└── js_sdk/
├── index.js # 根导出(namespace 方式)
├── catalog.js # 算法元数据目录
├── sorting/ # 排序算法 (10)
├── searching/ # 搜索算法 (6)
├── dynamic-programming/ # 动态规划 (8)
├── greedy/ # 贪心算法 (5)
├── backtracking/ # 回溯算法 (7)
├── divide-and-conquer/ # 分治算法 (5)
├── graph/ # 图论算法 (9)
├── string-matching/ # 字符串匹配 (6)
├── math/ # 数学计算 (8)
├── tree-structure/ # 树结构 (8)
├── machine-learning/ # 机器学习 (6)
└── compression-crypto/ # 压缩加密 (8)
兼容性
| 平台 |
支持 |
| H5 |
|
| App (Vue 2 / Vue 3) |
|
| 微信小程序 |
|
| 支付宝小程序 |
|
| 百度小程序 |
|
| 字节跳动小程序 |
|
设计特点
- 纯函数设计:所有算法不修改入参,返回新结果
- 命名空间隔离:使用
export * as category 避免同名冲突
- 独立模块:每个算法一个文件,按需导入
- 无依赖:纯 JavaScript 实现,零外部依赖
- 完整注释:每个函数包含 JSDoc 和时间/空间复杂度
更新日志
1.0.0 (2026-06-12)
- 初始版本发布
- 涵盖 12 大类 100+ 算法
- 附带交互式 Demo 页面
License
MIT License. 可自由使用、修改和分发。