LibraryRadix Sort

Radix Sort

Learn about Radix Sort as part of GATE Computer Science - Algorithms and Data Structures

Radix Sort: An Efficient Non-Comparison Sorting Algorithm

Radix Sort is a non-comparative integer sorting algorithm that sorts data with integer keys by grouping keys by the individual digits which share the same significant position and value. It is a stable sort and can be faster than comparison sorts, such as quicksort, merge sort, or heapsort, for the right data sets.

How Radix Sort Works

Radix Sort works by sorting numbers digit by digit. It typically starts with the least significant digit (LSD) and moves towards the most significant digit (MSD). For each digit position, it uses a stable sorting algorithm (like Counting Sort) to sort the numbers based on that digit. This process is repeated for all digit positions.

Radix Sort sorts numbers by processing digits from least to most significant.

Imagine sorting a deck of cards by suit first, then by rank. Radix Sort does something similar, but with digits of numbers.

The algorithm iterates through each digit place (units, tens, hundreds, etc.). In each pass, it uses a stable sorting algorithm (commonly Counting Sort) to arrange the numbers based on the digit at the current place value. Because the sorting at each step is stable, the relative order of numbers with the same digit at the current place is preserved from the previous pass. This ensures that by the time the most significant digit is processed, the entire list is sorted.

Key Concepts and Steps

  1. Determine the Maximum Number of Digits: Find the largest number in the array to know how many passes are needed.
  2. Iterate through Digit Places: Start from the least significant digit (LSD) and proceed to the most significant digit (MSD).
  3. Stable Sort: For each digit place, use a stable sorting algorithm (like Counting Sort) to sort the array based on the digits at that place.
  4. Repeat: Continue this process until all digit places have been considered.
What type of sorting algorithm is Radix Sort?

Radix Sort is a non-comparison sorting algorithm.

Which digit position does Radix Sort typically start sorting from?

Radix Sort typically starts sorting from the least significant digit (LSD).

Consider sorting the numbers [170, 45, 75, 90, 802, 24, 2, 66].

Pass 1 (Units Digit): Using Counting Sort on the units digit (0, 5, 5, 0, 2, 4, 2, 6), we get: [170, 90, 802, 2, 24, 45, 75, 66]. Notice how 170 and 90 (both ending in 0) maintain their relative order, as do 802 and 2 (both ending in 2).

Pass 2 (Tens Digit): Using Counting Sort on the tens digit (7, 4, 7, 9, 0, 2, 7, 6), we get: [802, 2, 24, 45, 66, 170, 75, 90]. Numbers with 0 in the tens place (802) come first, followed by 2 (2), 24, etc. The relative order of numbers with the same tens digit (e.g., 170, 75, 75) is preserved from the previous step.

Pass 3 (Hundreds Digit): Using Counting Sort on the hundreds digit (1, 0, 0, 0, 0, 0, 0, 0), we get: [2, 24, 45, 66, 75, 90, 170, 802]. The final sorted array.

📚

Text-based content

Library pages focus on text content

Time and Space Complexity

The time complexity of Radix Sort depends on the number of digits (d) and the range of values (k) for each digit. If we use Counting Sort as the stable sorting subroutine, the time complexity is O(d * (n + k)), where n is the number of elements. For a fixed number of digits and a fixed base (like base 10), this can be considered O(n).

The space complexity is O(n + k) due to the auxiliary space required by Counting Sort.

FeatureRadix SortComparison Sorts (e.g., QuickSort)
TypeNon-comparisonComparison
Time Complexity (Best/Avg)O(nk) or O(n) for fixed digits/baseO(n log n)
Time Complexity (Worst)O(nk) or O(n) for fixed digits/baseO(n^2) for QuickSort (typical)
Space ComplexityO(n + k)O(log n) to O(n) (depending on implementation)
StabilityStableCan be unstable (e.g., typical QuickSort)
Data TypeIntegers or strings with fixed-length keysAny comparable data type

Radix Sort shines when dealing with a large number of integers where the number of digits is relatively small or constant. It's often used for sorting strings or numbers within a known range.

Applications in Competitive Programming and GATE

In competitive programming and for exams like GATE CS, Radix Sort is important for understanding efficient sorting techniques. It's particularly relevant when problems involve sorting large datasets of integers or strings where a linear time complexity is achievable. Recognizing when Radix Sort is applicable over comparison sorts can be a key advantage.

What is the primary advantage of Radix Sort over comparison sorts for certain datasets?

Radix Sort can achieve linear time complexity (O(n)) for specific datasets, whereas comparison sorts are bounded by O(n log n).

Learning Resources

Radix Sort - GeeksforGeeks(documentation)

A comprehensive explanation of Radix Sort with C++, Java, and Python implementations, covering both LSD and MSD approaches.

Radix Sort Algorithm - Tutorialspoint(documentation)

Provides a clear overview of the Radix Sort algorithm, its working principle, and its time complexity.

Radix Sort Explained (LSD and MSD)(video)

A visual explanation of how Radix Sort works, including both Least Significant Digit (LSD) and Most Significant Digit (MSD) methods.

Radix Sort - Programiz(documentation)

Details the Radix Sort algorithm with a focus on its implementation and efficiency, including a step-by-step example.

Algorithms - Radix Sort - MIT OpenCourseware(video)

A lecture from MIT covering Radix Sort and its relationship with Counting Sort, offering a rigorous academic perspective.

Radix Sort - Wikipedia(wikipedia)

An in-depth look at Radix Sort, its history, variations (LSD, MSD), complexity analysis, and applications.

Data Structures and Algorithms: Radix Sort(documentation)

Explains Radix Sort with a focus on Java implementation, detailing the algorithm and its performance characteristics.

Understanding Radix Sort - Towards Data Science(blog)

A blog post that breaks down Radix Sort, making it accessible with clear examples and discussions on its efficiency.

GATE CS Syllabus - Algorithms and Data Structures(documentation)

The official syllabus for GATE Computer Science, which lists sorting algorithms as a key topic within Algorithms and Data Structures.

Radix Sort - Codecademy(blog)

A beginner-friendly article explaining the concept of Radix Sort and how it differs from other sorting methods.