DSA Explorer
QuicksortMerge SortBubble SortInsertion SortSelection SortHeap SortCounting SortRadix SortBucket SortShell SortTim SortCocktail Shaker SortComb SortGnome SortPancake SortPatience SortCycle SortStrand SortWiggle Sort (Wave Sort)Bead Sort (Gravity Sort)Binary Insertion SortBitonic SortBogo Sort (Stupid Sort)Stooge SortOdd-Even Sort (Brick Sort)Pigeonhole SortIntro Sort (Introspective Sort)Tree Sort (BST Sort)Dutch National Flag (3-Way Partitioning)
Binary SearchLinear SearchJump SearchInterpolation SearchExponential SearchTernary SearchFibonacci SearchQuick Select (k-th Smallest)Median of Medians (Deterministic Select)Hill climbingSimulated AnnealingTabu SearchBinary Tree DFS SearchSentinel Linear SearchDouble Linear SearchTernary Search (Unimodal Function)Search in 2D Matrix
Binary Search Tree (BST)StackQueueHash Table (Hash Map)Heap (Priority Queue)Linked ListTrie (Prefix Tree)Binary TreeTrie (Prefix Tree)Floyd's Cycle Detection (Tortoise and Hare)Merge Two Sorted Linked ListsCheck if Linked List is PalindromeFind Middle of Linked ListBalanced Parentheses (Valid Parentheses)Next Greater ElementInfix to Postfix ConversionMin Stack (O(1) getMin)Largest Rectangle in HistogramDaily Temperatures (Monotonic Stack)Evaluate Reverse Polish NotationInfix Expression Evaluation (Two Stacks)Min Heap & Max HeapSliding Window MaximumTrapping Rain WaterRotate Matrix 90 DegreesSpiral Matrix TraversalSet Matrix ZeroesHash Table with ChainingOpen Addressing (Linear Probing)Double HashingCuckoo Hashing
Depth-First Search (DFS)Breadth-First Search (BFS)Dijkstra's AlgorithmFloyd-Warshall AlgorithmKruskal's AlgorithmPrim's AlgorithmTopological SortA* Pathfinding AlgorithmKahn's Algorithm (Topological Sort)Ford-Fulkerson Max FlowEulerian Path/CircuitBipartite Graph CheckBorůvka's Algorithm (MST)Bidirectional DijkstraPageRank AlgorithmBellman-Ford AlgorithmTarjan's Strongly Connected ComponentsArticulation Points (Cut Vertices)Find Bridges (Cut Edges)Articulation Points (Cut Vertices)Finding Bridges (Cut Edges)
0/1 Knapsack ProblemLongest Common Subsequence (LCS)Edit Distance (Levenshtein Distance)Longest Increasing Subsequence (LIS)Coin Change ProblemFibonacci Sequence (DP)Matrix Chain MultiplicationRod Cutting ProblemPalindrome Partitioning (Min Cuts)Subset Sum ProblemWord Break ProblemLongest Palindromic SubsequenceMaximal Square in MatrixInterleaving StringEgg Drop ProblemUnique Paths in GridCoin Change II (Count Ways)Decode WaysWildcard Pattern MatchingRegular Expression MatchingDistinct SubsequencesMaximum Product SubarrayHouse RobberClimbing StairsPartition Equal Subset SumKadane's Algorithm (Maximum Subarray)
A* Search AlgorithmConvex Hull (Graham Scan)Line Segment IntersectionCaesar CipherVigenère CipherRSA EncryptionHuffman CompressionRun-Length Encoding (RLE)Lempel-Ziv-Welch (LZW)Canny Edge DetectionGaussian Blur FilterSobel Edge FilterHarris Corner DetectionHistogram EqualizationMedian FilterLaplacian FilterMorphological ErosionMorphological DilationImage Thresholding (Otsu's Method)Conway's Game of LifeLangton's AntRule 30 Cellular AutomatonFast Fourier Transform (FFT)Butterworth FilterSpectrogram (STFT)
Knuth-Morris-Pratt (KMP) AlgorithmRabin-Karp AlgorithmBoyer-Moore AlgorithmAho-Corasick AlgorithmManacher's AlgorithmSuffix ArraySuffix Tree (Ukkonen's Algorithm)Trie for String MatchingEdit Distance for StringsLCS for String MatchingHamming DistanceJaro-Winkler DistanceDamerau-Levenshtein DistanceBitap Algorithm (Shift-Or, Baeza-Yates-Gonnet)Rolling Hash (Rabin-Karp Hash)Manacher's AlgorithmZ AlgorithmLevenshtein Distance

Quicksort

Intermediate

A highly efficient, in-place sorting algorithm that uses divide-and-conquer strategy. Invented by Tony Hoare in 1959, it remains one of the most widely used sorting algorithms due to its excellent average-case performance and cache efficiency.

Sorting
O(n log n)

Interactive visualization available

Time: O(n log n)
Space: O(log n)

Merge Sort

Intermediate

A stable, divide-and-conquer sorting algorithm with guaranteed O(n log n) performance.

Sorting
O(n log n)

Interactive visualization available

Time: O(n log n)
Space: O(n)

Bubble Sort

Beginner

Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping adjacent elements if they are in the wrong order. This process is repeated until the entire array is sorted. Named for the way larger elements 'bubble' to the top (end) of the array.

Sorting
O(n²)

Interactive visualization available

Time: O(n²) - typical case with random data
Space: O(1) - only uses a constant amount of additional space

Insertion Sort

Beginner

Insertion Sort is a simple, intuitive sorting algorithm that builds the final sorted array one element at a time. It works similarly to how people sort playing cards in their hands - picking each card and inserting it into its correct position among the already sorted cards. Despite its O(n²) time complexity, Insertion Sort is efficient for small datasets and nearly sorted arrays, making it practical for real-world applications.

Sorting
O(n²)

Interactive visualization available

Time: O(n²)
Space: O(1)

Selection Sort

Beginner

Selection Sort is a simple comparison-based sorting algorithm that divides the array into sorted and unsorted regions. It repeatedly selects the smallest (or largest) element from the unsorted region and moves it to the end of the sorted region. The algorithm performs the minimum number of swaps (n-1 at most), making it useful when memory writes are expensive operations.

Sorting
O(n²)

Interactive visualization available

Time: O(n²)
Space: O(1)

Heap Sort

Advanced

A comparison-based sorting algorithm that uses a binary heap data structure. Invented by J. W. J. Williams in 1964, it combines the better attributes of merge sort and insertion sort. Heap sort divides its input into a sorted and an unsorted region, and iteratively shrinks the unsorted region by extracting the largest element and inserting it into the sorted region.

Sorting
O(n log n)

Interactive visualization available

Time: O(n log n)
Space: O(1)

Counting Sort

Intermediate

A non-comparison based integer sorting algorithm that operates by counting the number of objects having distinct key values, then calculating the position of each object in the output sequence. It's efficient when the range of input data (k) is not significantly greater than the number of objects to be sorted (n).

Sorting
O(n + k)

Interactive visualization available

Time: O(n + k)
Space: O(n + k)

Radix Sort

Advanced

A non-comparative integer sorting algorithm that sorts data with integer keys by grouping keys by individual digits which share the same significant position and value. Radix sort dates back to 1887 to the work of Herman Hollerith on tabulating machines.

Sorting
O(d × (n + k))

Interactive visualization available

Time: O(d × (n + k))
Space: O(n + k)

Bucket Sort

Intermediate

Distribution sort that distributes elements into buckets, then sorts each bucket individually. Works well when input is uniformly distributed. Combines with insertion sort for bucket sorting.

Sorting
O(n + k) average

Interactive visualization available

Time: O(n + k)
Space: O(n + k)

Shell Sort

Intermediate

Generalized insertion sort using gap sequences. Invented by Donald Shell in 1959. Sorts elements at specific intervals (gaps), gradually reducing gap to 1. More efficient than insertion sort for larger arrays.

Sorting
O(n log² n) typical

Interactive visualization available

Time: O(n log² n)
Space: O(1)

Tim Sort

Advanced

Hybrid sorting algorithm derived from merge sort and insertion sort. Python's built-in sort and Java's Arrays.sort. Invented by Tim Peters in 2002. Exploits runs of consecutive sorted elements.

Sorting
O(n log n)

Interactive visualization available

Time: O(n log n)
Space: O(n)

Cocktail Shaker Sort

Beginner

Bidirectional bubble sort that passes through the list in both directions each iteration, moving large items to the end and small items to the beginning.

Sorting
O(n²)

Interactive visualization available

Time: O(n²)
Space: O(1)

Comb Sort

Beginner

Bubble-like sort that eliminates small-value turtles using a shrinking gap between compared elements.

Sorting
O(n²) average

Interactive visualization available

Time: O(n²)
Space: O(1)

Gnome Sort

Beginner

Insertion-like algorithm that swaps adjacent out-of-order elements and steps back until in order.

Sorting
O(n²)

Interactive visualization available

Time: O(n²)
Space: O(1)

Pancake Sort

Intermediate

Sorts using only prefix flips: brings the current maximum to front then flips it to its final position at the end of the prefix.

Sorting
O(n²)

Interactive visualization available

Time: O(n²)
Space: O(1)

Patience Sort

Advanced

Card-game-inspired sorting building piles with binary search and merging pile tops via a min-heap.

Sorting
O(n log n)

Interactive visualization available

Time: O(n log n)
Space: O(n)

Cycle Sort

Advanced

In-place sorting minimizing writes by rotating cycles of elements into position.

Sorting
O(n²)

Interactive visualization available

Time: O(n²)
Space: O(1)

Strand Sort

Intermediate

Extract increasing strands from input and merge them into the result until input is empty.

Sorting
O(n²) average

Interactive visualization available

Time: O(n²)
Space: O(n)

Wiggle Sort (Wave Sort)

Beginner

Reorders array to a0 ≤ a1 ≥ a2 ≤ a3 … using a single pass of local swaps.

Sorting
O(n)

Interactive visualization available

Time: O(n)
Space: O(1)

Bead Sort (Gravity Sort)

Advanced

Physical sorting algorithm simulating gravity on beads, O(n) or O(√n) depending on implementation.

Sorting
O(S) where S is sum of elements

Interactive visualization available

Time: O(n*m)
Space: O(n*m)

Binary Insertion Sort

Intermediate

Insertion sort using binary search to find insertion position, reducing comparisons to O(n log n).

Sorting
O(n²) moves

Interactive visualization available

Time: O(n²)
Space: O(1)

Bitonic Sort

Advanced

Parallel sorting algorithm for power-of-2 size arrays using bitonic sequences.

Sorting
O(log² n)

Interactive visualization available

Time: O(n log² n) sequential
Space: O(log n)

Bogo Sort (Stupid Sort)

Beginner

Randomizes array until sorted. Worst-case unbounded. Used only for humor/education.

Sorting
O((n+1)!)

Interactive visualization available

Time: O((n+1)!)
Space: O(1)

Stooge Sort

Intermediate

Recursive sorting dividing into thirds. O(n^2.7). Educational curiosity.

Sorting
O(n^2.7)

Interactive visualization available

Time: O(n^2.7)
Space: O(n)
DSA Explorer

Master Data Structures and Algorithms through interactive visualizations and detailed explanations. Our platform helps you understand complex concepts with clear examples and real-world applications.

Quick Links

  • About DSA Explorer
  • All Algorithms
  • Data Structures
  • Contact Support

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Code of Conduct

Stay Updated

Subscribe to our newsletter for the latest algorithm explanations, coding challenges, and platform updates.

We respect your privacy. Unsubscribe at any time.

© 2026 Momin Studio. All rights reserved.

SitemapAccessibility
v1.0.0