更新记录

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 实现,适合学习、面试准备和项目集成。

Version License [Platform]()


功能概述

算法合集是一个综合性的 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、维吉尼亚密码

安装与使用

方式一:插件市场导入

  1. 在 uni-app 插件市场搜索 "算法合集"
  2. 点击「导入插件」到你的 uni-app 项目
  3. 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. 可自由使用、修改和分发。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议