Learn, code, and visualise algorithms.
Choose an algorithm to visualize and learn
A simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order.
Builds the final sorted array one item at a time by repeatedly inserting a new element into the sorted portion of the array.
A divide-and-conquer algorithm that recursively breaks down a problem into two or more sub-problems until they become simple enough to solve directly.
A highly efficient, comparison-based sorting algorithm that uses a divide-and-conquer strategy with a pivot element to partition the array.
A search algorithm that finds the position of a target value within a sorted array by repeatedly dividing the search interval in half.
A data structure that implements an associative array abstract data type using linked lists for collision resolution.
A method for finding a target value within a list by checking each element in sequence until the target is found.
An algorithm for traversing or searching tree or graph data structures, exploring all vertices at the present depth before moving on to vertices at the next depth level.
An algorithm for traversing or searching tree or graph data structures, exploring as far as possible along each branch before backtracking.
A graph traversal algorithm that uses three colors to mark the state of vertices during traversal.
An algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks.
A pathfinding algorithm that uses a heuristic function to estimate the cost to reach the goal, making it more efficient than Dijkstra's algorithm.