Introduction of Radix Sort

By | October 3, 2023

Radix Sort is the answer when elements are in the range from 1 to n^2. The idea of Radix Sort is to do digit by digit sort starting from least significant digit to most significant digit. Radix sort uses counting sort as a subroutine to sort.

Radix Sort:

Radix Sort basically consists of the following steps:

  1. Take the Least Significant Digit of each element
  2. Sort the list of elements based on the digit, but keep the order of elements with the same digit i.e. sorting stably.
  3. Repeat the sort with each more significant digit.

Radix sort can be implemented in many ways like counting sort and bucket sort. Here, we’ll be using bucket sort technique. Bucket sort is mainly useful when input is uniformly distributed over a range.

RECOMMENDED: Characteristics or features of an Algorithm

Time Complexity:

T(n) = O(nd)  ≈ O(n) , if d is small
Here, n is input size
d is number of digits in input integers. 

Implementation of Radix Sort :

Following is a simple implementation of radix sort in Python.
For easier understanding, the value of radix, r is 10.
It is recommended to go through Bucket Sort for understanding why how bucket sorting works.

# Python program for implementation of Radix Sort using bucket sort technique
def radixSort(a):
    # radix
    r = 10
    maxlength = False
    temp, place = -1, 1
    while not maxlength:
        maxlength = True
        # create buckets size 10 as integers are decimal numbers 
        # so they can hold numbers from 0-9 only, that's why size of 10
        buckets = [list() for _ in range(r)]
        for i in a:
            temp = int(i/place)
            # store elements in buckets 
            # using least significant digit as bucket index
            buckets[temp % r].append(i)
            if maxlength and temp > 0:
                maxlength = False
        d = 0
        for b in range(r):
            buck = buckets[b]
            # store back elements in array A
            # in the same order they're stored in buckets
            for i in buck:
                a[d] = i
                d += 1
        place *= r


# create array
a = [18, 4, 823, 61, 234]
#Function call
radixSort(a)
#function to print the sorted array
for i in range(len(a)):
    print(a[i])

Output:

4
18
61
234
823

Please write comments below if you find anything incorrect, or you want to share more information about the topic discussed above. A gentle request to share this topic on your social media profile.

Author: Mithlesh Upadhyay

I hold an M.Tech degree in Artificial Intelligence (2023) from Delhi Technological University (DTU) and possess over 4 years of experience. I worked at GeeksforGeeks, leading teams and managing content, including GATE CS, Test Series, Placements, C, and C++. I've also contributed technical content to companies like MarsDev, Tutorialspoint, StudyTonight, TutorialCup, and Guru99. My skill set includes coding, Data Structures and Algorithms (DSA), and Object-Oriented Programming (OOPs). I'm proficient in C++, Python, JavaScript, HTML, CSS, Bootstrap, React.js, Node.js, MongoDB, Django, and Data Science.