Learning JavaScript Data Structures and Algorithms
Base
-
数组 (Array)
-
栈 (Stack)
-
队列 (Queue)
-
链表 (LinkedList)
- 单链表 (LinkedList)
- 双链表 (DoublyLinkedList)
- 循环链表 (CircularLinkedList)
- 判断链表是否成环 (LinkedListWithCycle)
- 链表插入排序 (InsertionSort)
- 链表快速排序 (QuickSort)
- 链表归并排序 (MergeSort)
-
集合 (Set)
-
映射表(Map)
- 字典 (Dictionary)
- 散列表 (HashTable)
- 分离链接 (HashCollisionSeparateChaining)
- 线性探查 (HashCollisionLinearProbing)
TopK
- 找第 k 大的元素 (Quick_Select)
- 找最大的 k 个元素 (Heap)
- 优先队列 (PriorityQueue)
Sort
- 排序算法 (SortingAlgorithm)
- 冒泡排序 (bubbleSort)
- 选择排序 (selectionSort)
- 插入排序 (insertionSort)
- 归并排序 (mergeSort)
- 快速排序 (quickSort)
- 堆排序 (heapSort)
- 希尔排序 (shellSort)
- 计数排序 (countingSort)
- 桶排序 (bucketSort)
- 基数排序(分布式排序) (radixSort)
String
- 字符串匹配 (KMP)
Tree
- 二叉搜索树 (BinarySearchTree)
- 迭代先序遍历、中序遍历、后序遍历 (OrderTraverse)
- AVL树 (AVLTree)
- BST 的扩展
- 自平衡,任意节点的左右子树高度最多相差 1
- 插入和移除节点性能并不总是最好的(虽然自平衡),更好的选择是红黑树
- 红黑树 (RedBlackTree)
- 可高效率有序地遍历其节点
Graph
- 最短路 (ShortestPath)
- dijkstra
- floydWarshall
- 最小生成树 (MinimumSpanningTree)
- prim
- kruskal
TODO
- 优先队列 (PriorityQueue)
- AVL树 (AVLTree)
- 红黑树 (RedBlackTree)