# JavaScript Algorithms and Data Structures

May 23, 2018     631 A list of JavaScript based examples of many popular algorithms and data structures.

##### Data Structures
• Queue
• Stack
• Hash Table
• Heap
• Priority Queue
• Trie
• Tree
• Binary Search Tree
• AVL Tree
• Red-Black Tree
• Suffix Tree
• Segment Tree or Interval Tree
• Binary Indexed Tree or Fenwick Tree
• Graph (both directed and undirected)
• Disjoint Set

##### Algorithms
• Math
• Factorial
• Fibonacci Number
• Primality Test (trial division method)
• Euclidean Algorithm - calculate the Greatest Common Divisor (GCD)
• Least Common Multiple (LCM)
• Integer Partition
• Sets
• Cartesian Product - product of multiple sets
• Power Set - all subsets of the set
• Permutations (with and without repetitions)
• Combinations (with and without repetitions)
• Fisher–Yates Shuffle - random permutation of a finite sequence
• Longest Common Subsequence (LCS)
• Longest Increasing subsequence
• Shortest Common Supersequence (SCS)
• Knapsack Problem - "0/1" and "Unbound" ones
• Maximum Subarray - "Brute Force" and "Dynamic Programming" (Kadane's) versions
• String
• Levenshtein Distance - minimum edit distance between two sequences
• Hamming Distance - number of positions at which the symbols are different
• Knuth–Morris–Pratt Algorithm - substring search
• Rabin Karp Algorithm - substring search
• Longest Common Substring
• Search
• Binary Search
• Sorting
• Bubble Sort
• Selection Sort
• Insertion Sort
• Heap Sort
• Merge Sort
• Quicksort
• Shellsort
• Tree
• Depth-First Search (DFS)
• Graph
• Depth-First Search (DFS)
• Dijkstra Algorithm - finding shortest path to all graph vertices
• Bellman-Ford Algorithm - finding shortest path to all graph vertices
• Detect Cycle - for both directed and undirected graphs (DFS and Disjoint Set based versions)
• Prim’s Algorithm - finding Minimum Spanning Tree (MST) for weighted undirected graph
• Kruskal’s Algorithm - finding Minimum Spanning Tree (MST) for weighted undirected graph
• Topological Sorting - DFS method
• Articulation Points - Tarjan's algorithm (DFS based)
• Bridges - DFS based algorithm
• Eulerian Path and Eulerian Circuit - Fleury's algorithm - Visit every edge exactly once
• Hamiltonian Cycle - Visit every vertex exactly once
• Strongly Connected Components - Kosaraju's algorithm
• Travelling Salesman Problem - shortest possible route that visits each city and returns to the origin city
• Uncategorized
• Tower of Hanoi
• N-Queens Problem
• Knight's Tour
• Brute Force - look at all the possibilities and selects the best solution
• Maximum Subarray
• Travelling Salesman Problem - shortest possible route that visits each city and returns to the origin city
• Greedy - choose the best option at the current time, without any consideration for the future
• Unbound Knapsack Problem
• Dijkstra Algorithm - finding shortest path to all graph vertices
• Prim’s Algorithm - finding Minimum Spanning Tree (MST) for weighted undirected graph
• Kruskal’s Algorithm - finding Minimum Spanning Tree (MST) for weighted undirected graph
• Divide and Conquer - divide the problem into smaller parts and then solve those parts
• Binary Search
• Tower of Hanoi
• Euclidean Algorithm - calculate the Greatest Common Divisor (GCD)
• Permutations (with and without repetitions)
• Combinations (with and without repetitions)
• Merge Sort
• Quicksort
• Tree Depth-First Search (DFS)
• Graph Depth-First Search (DFS)
• Dynamic Programming - build up to a solution using previously found sub-solutions
• Fibonacci Number
• Levenshtein Distance - minimum edit distance between two sequences
• Longest Common Subsequence (LCS)
• Longest Common Substring
• Longest Increasing subsequence
• Shortest Common Supersequence
• 0/1 Knapsack Problem
• Integer Partition
• Maximum Subarray
• Bellman-Ford Algorithm - finding shortest path to all graph vertices
• Backtracking - similarly to brute force try to generate all possible solutions but each time you generate a solution test if it satisfies all conditions, and only then continue generating subsequent solutions. Otherwise backtrack and go on a different path of finding solution
• Hamiltonian Cycle - Visit every vertex exactly once
• N-Queens Problem
• Knight's Tour
• Branch & Bound

### You May Also Like 