Algorithm Visualizer

Explore and understand algorithms through interactive, step-by-step visualizations.

Bubble Sort

Sorting

A simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order.

Visualize

Selection Sort

Sorting

An in-place comparison sorting algorithm that repeatedly selects the minimum element and moves it to the sorted part.

Visualize

Insertion Sort

Sorting

A simple sorting algorithm that builds the final sorted array one item at a time, inserting each new item into its proper place.

Visualize

Merge Sort

Sorting

An efficient, stable, comparison-based sorting algorithm using the divide and conquer paradigm.

Visualize

Quick Sort

Sorting

An efficient sorting algorithm, serving as a systematic method for placing the elements of an array in order using a pivot.

Visualize

Heap Sort

Sorting

A comparison-based sorting technique based on a Binary Heap data structure. It is similar to selection sort.

Visualize

Shell Sort

Sorting

A highly efficient, in-place comparison sort. It is an generalization of insertion sort, allowing the exchange of items that are far apart.

Visualize

Counting Sort

Sorting

A non-comparison sorting algorithm that operates by counting the number of objects that have each distinct key value.

Visualize

Radix Sort

Sorting

A non-comparative sorting algorithm that sorts integers by processing individual digits.

Visualize

Bucket Sort

Sorting

A distribution-based sorting algorithm that divides elements into buckets, sorts each bucket individually, and then concatenates them.

Visualize

Comb Sort

Sorting

An improved version of bubble sort that eliminates small values at the end of the list (turtles) by using a gap larger than 1.

Visualize

Gnome Sort

Sorting

A simple sorting algorithm similar to insertion sort that works by moving elements backward until they are in the correct position.

Visualize

Cocktail Shaker Sort

Sorting

A bidirectional variation of bubble sort that traverses the list in both directions alternately, improving performance on certain types of data.

Visualize

Tim Sort

Sorting

A hybrid stable sorting algorithm derived from merge sort and insertion sort, designed to perform well on real-world data. It is the default sorting algorithm in Python and Java.

Visualize

Linear Search

Searching

A sequential search algorithm that starts at one end and goes through each element of a list until the desired element is found.

Visualize

Binary Search

Searching

An efficient algorithm for finding an item from a sorted list of items. It works by repeatedly dividing in half the portion of the list that could contain the item.

Visualize

Jump Search

Searching

A searching algorithm for sorted arrays. The basic idea is to check fewer elements by jumping ahead by fixed steps.

Visualize

Exponential Search

Searching

A search algorithm particularly useful for unbounded or infinite arrays. It finds the range where the target element exists by exponentially increasing the index, then performs binary search within that range.

Visualize

Interpolation Search

Searching

An improved variant of binary search for uniformly distributed sorted arrays. Instead of always checking the middle element, it estimates the position of the target based on its value.

Visualize

Fibonacci Search

Searching

A comparison-based search technique that uses Fibonacci numbers to divide the array into unequal parts. It's similar to binary search but divides the array using Fibonacci numbers instead of dividing it in half.

Visualize

Kadane's Algorithm

Arrays

An efficient algorithm to find the contiguous subarray within a one-dimensional array of numbers that has the largest sum.

Visualize

Dutch National Flag Problem

Arrays

An algorithm for sorting an array of 0s, 1s, and 2s in a single pass.

Visualize

Sliding Window Maximum

Arrays

A problem which involves finding the maximum element in every subarray of size k.

Visualize

Breadth-First Search (BFS)

Graphs

A graph traversal algorithm that explores neighbors first before moving to the next level of neighbors.

Visualize

Depth-First Search (DFS)

Graphs

A graph traversal algorithm that explores as far as possible along each branch before backtracking.

Visualize

Dijkstra's Algorithm

Graphs

An algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks.

Visualize

Bellman-Ford Algorithm

Graphs

An algorithm that computes shortest paths from a single source vertex to all other vertices in a weighted digraph, even with negative edge weights.

Visualize

Prim's Algorithm

Graphs

A greedy algorithm that finds a minimum spanning tree for a weighted undirected graph.

Visualize

Kruskal's Algorithm

Graphs

A greedy algorithm that finds a minimum spanning tree for a weighted undirected graph by adding edges in increasing order of weight.

Visualize

Fibonacci Sequence (Dynamic Programming)

Dynamic Programming

A classic problem solved using dynamic programming by storing results of subproblems.

Visualize

Longest Increasing Subsequence

Dynamic Programming

A dynamic programming problem to find the length of the longest subsequence of a given sequence such that all elements of the subsequence are sorted in increasing order.

Visualize
AlgoViz: Interactive Algorithm Visualizer | Learn Data Structures & Algorithms