/algorithms-ecmascript

📘 基于 EcmaScript 实现,全网知识讲解最全面、最详细、最易懂的算法教程。

Primary LanguageJavaScript

Algorithms In EcmaScript

我们的目标是打造全网知识讲解最全面、最详细、最易懂的算法教程。

并分享更多学习方法论,牢固掌握,避免遗忘,内化能力。

项目编写中。

介绍 Introduction

目录 Contents

经验方法 Methodology 0%

  • 为什么要学习算法?
  • 学习能力方法论?
  • 编程能力方法论?

排序 Sorting 80%

序号 名称 En 进度
1 排序简介 Sorting 100%
2 冒泡排序 Bubble sort 100%
3 插入排序 Insertion sort 100%
4 选择排序 Selection sort 100%
5 归并排序 Merge sort 100%
6 快速排序 Quick sort 100%
7 希尔排序 Shell sort 100%
8 堆排序 Heap sort
9 计数排序 Counting sort
10 基数排序 Radix sort

数学 Math

序号 名称 En 进度
1 阶乘 Factorial 90%
2 斐波那契数 Fibonacci 90%
3 最大公约数 Greatest Common Divisor 90%
4 最小公倍数 Least Common Multiple 90%
5 素数 Prime 90%
6 Power 50%

搜索 Search

序号 名称 En 进度
1 线性搜索 Linear Search 50%
2 跳转搜索 Jump Search 50%
3 二分查找 Binary Search 50%
4 差值搜索 Interpolation Search 50%

字符串 String

序号 名称 En 进度
1 回文 Palindrome
2 汉明距离 Hamming Distance
3 来温斯坦距离 Levenshtein distance
4 KMP 算法 KMP Algorithm
5 字符串快速查找算法 Z Algorithm
6 Rabin Karp 算法 Rabin Karp Algorithm
7 最长公共子串 Longest Common Substring
8 正则表达式匹配 Regular Expression Matching

集合 Set

序号 名称 En 进度
1 笛卡尔积 Cartesian Product
2 洗牌算法 Fisher–Yates Shuffle
3 幂集 Power Set
4 排列 Permutations
5 组合 Combinations
6 最长公共子序列 Longest Common Subsequence
7 最长递增子序列 Longest Increasing Subsequence
8 最短公共父序列 Shortest Common Supersequence
9 背包问题 Knapsack Problem
10 最大子数列问题 Maximum Subarray
11 组合求和 Combination Sum

链表 Linked List

序号 名称 En Desciption 进度
1 链表基础 LinkedList 0
2 中间值 Middle The middle node 70%
3 交换 Swap Swap every two adjacent nodes 70%
4 Cycle The node where the cycle begins 70%
5 移除 Remove Remove the nth node from the end of the list 70%
6 翻转 Reverse Reverse a list from position m to n 70%
7 排序 Sort Sort in ascending order 70%
8 分割 Partition All nodes less than x come before nodes greater than or equal to x 70%
9 交点 Intersection AThe intersection of two linked lists begins 70%
10 回文 Palindrome Palindrome judgment 70%
11 复制 Copy Each node contains an additional random pointer 70%

二叉树 Binary Tree

序号 名称 En Description 进度
1 二叉树基础 0
2 遍历 Traversal Inorder & Preorder & Postorder & LevelOrder 70%
3 深度 Depth Maximum Depth & Minimum Depth 70%
4 构造 Construct Construct Binary Tree from Traversal 70%
5 视图 View Right Side View & Left Side View 70%
6 反转 Invert Invert left and right 70%
7 相同 Same Same judgment 70%
8 对称 Symmetric Symmetric judgment 70%
9 二叉搜索树 Binary Search Tree BST judgment 70%
10 高度平衡树 Height Balanced Height Balanced judgment 70%
11 路经总和 Path Sum All root-to-leaf paths where each path's sum equals targetSum 70%

图 Graphs -- 进度 0%

  1. 深度优先搜索 (DFS)
  2. 广度优先搜索 (BFS)
  3. 克鲁斯克尔演算法 - 寻找加权无向图的最小生成树 (MST)
  4. 戴克斯特拉算法 - 找到图中所有顶点的最短路径
  5. 贝尔曼-福特算法 - 找到图中所有顶点的最短路径
  6. 弗洛伊德算法 - 找到所有顶点对 之间的最短路径
  7. 判圈算法 - 对于有向图和无向图 (基于 DFS 和不相交集的版本)
  8. 普林演算法 - 寻找加权无向图的最小生成树 (MST)
  9. 拓扑排序 - DFS 方法
  10. 关节点 - Tarjan 算法 (基于 DFS)
  11. 桥 - 基于 DFS 的算法
  12. 欧拉回径与一笔画问题 - Fleury 的算法 - 一次访问每个边
  13. 哈密顿图 - 恰好访问每个顶点一次
  14. 强连通分量 - Kosaraju 算法
  15. 旅行推销员问题 - 尽可能以最短的路线访问每个城市并返回原始城市

Contribution

If you think that these can be improved in anyway, please do suggest.

  • Open pull request with improvements
  • Discuss ideas in issues

License

License: CC BY-NC-ND 3.0