algorithms.js
Atwood's Law applied to CS101.
Classic algorithms and data structures implemented in JavaScript, you know... FOR SCIENCE.
Installing
npm install --save algorithms
Contents
Data Structures
require('algorithms/data_structures');
// or
require('algorithms').DataStructures;
- AVLTree
- BST
- DisjointSetForest
- FenwickTree
- Graph
- HashTable
- Heap
- MaxHeap
- MinHeap
- LinkedList
- PriorityQueue
- Queue
- Set (HashSet)
- Stack
- Treap
Geometry algorithms
require('algorithms/geometry');
// or
require('algorithms').Geometry;
- BezierCurve
Graph algorithms
require('algorithms/graph');
// or
require('algorithms').Graph;
- breadthFirstSearch
- depthFirstSearch
- eulerPath
- topologicalSort
Shortest path
- bellmanFord
- bfsShortestPath
- dijkstra
- floydWarshall
- SPFA (Shortest Path Faster Algorithm)
Minimum spanning tree
- prim
- kruskal
Math algorithms
require('algorithms/math');
// or
require('algorithms').Math;
- collatzConjecture
- extendedEuclidean
- fastPower
- fibonacci
- findDivisors
- fisherYates
- gcd (Greatest common divisor)
- greatestDifference
- lcm (Least common multiple)
- newtonSqrt
- nextPermutation
- powerSet
- reservoirSampling
- shannonEntropy
Search algorithms
require('algorithms/search');
// or
require('algorithms').Search;
- bfs (breadth-first search for binary trees)
- binarySearch
- dfs (depth-first search for binary trees)
- inOrder (default)
- postOrder
- preOrder
Sorting algorithms
require('algorithms/sorting');
// or
require('algorithms').Sorting;
- bubbleSort
- countingSort
- heapSort
- insertionSort
- quicksort
- radixSort
- selectionSort
- shellSort
- shortBubbleSort
String algorithms
require('algorithms/string');
// or
require('algorithms').String;
- hamming
- huffman
- decode
- encode
- knuthMorrisPratt
- levenshtein
- longestCommonSubsequence
- longestCommonSubstring
- rabinKarp
Contributing
This project uses Google JavaScript Style Guide which can be a bit strict, but is really helpful in order to have more readable and less error-prone code