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