×

Radix Sort

Radix Sort: The radix sort is a non-comparative integer sorting algorithm that sorts the elements by grouping the individual digits of the same location. It shares the same significant position and value. Positional notation is required in this sorting. An excellent example of the radix sort is a dictionary because, in the dictionary, all the alphabets are arranged in alphabetical order. Radix sort was developed by the Harold H. Seward in 1954.

Complexity table of radix sort

ComplexityBest caseAverage caseWorst case
Time?(n + k)?(nk)O(nk)
Space  O(n + k)

Algorithm of radix sort

Step 1: Find the largest number in ARR as LARGE 
Step 2: [INITIALIZE] SET NOP = Number of digits in LARGE 
Step 3: SET PASS = 0 
Step 4: Repeat Step 5 while PASS <= NOP-1 
Step 5: SET I = 0 and INITIALIZE buckets 
Step 6: Repeat Steps 7 to 9 while I<n-1< li=""></n-1<> 
Step 7: SET DIGIT = digit at (PASS)th place in A[I] 
Step 8: Add A[I] to the bucket numbered DIGIT 
Step 9: INCREMENT bucket count for bucket numbered DIGIT
             // end of loop 
Step 10: Collect the numbers in the bucket
             // end of loop 
Step 11: end  

Example 1: Suppose we have the following array, which we have to sort.

542254864650875781453211152968
Step 1: Sort the array according to the last digit of the value in the array element.   
650 781 211 542 152 453 254 864 875 968 
Step 2: Sort the array according to the middle digit of the value in the array element.   
211 542 650 152 453 254 864 968 875 781   
Step 3: Sort the array according to the first digit of the value in the array element. 
152 211 254 453 542 650 781 864 875 968

Example 2: Suppose we have the following array, which we have to sort.

65374321010632576972119918
Step 1: 0065 0374 3210 0010 0006 3257 0697 0211 0099 0018 
Step 2: Sort the array according to the last digit of the value in the array element.  
3210 0010 0211 0374 0065 0006 3257 0697 0018 0099 
Step 3: Sort the array according to the second last digit of the value in the array element.   
0006 3210 0010 0211 0018 3257 0065 0374 0697 0099 
Step 4: Sort the array according to the second digit of the value in the array element.   
0006 0010 0018 0065 0099 3210 0211 3257 0374 0697 
Step 5: Sort the array according to the first digit of the value in the array element.   
0006 0010 0018 0065 0099 0211 0374 0697 3210 3257 
6 10 18 65 99 211 374 697 3210 3257

Radix sort program in C language:

#include <stdio.h> 
 int largest(int a[]);  
void radix_sort(int a[]); 
 void main()  
{    
  int i;     
 int a[10]={21, 14, 65, 785, 365, 652, 75, 35, 3214, 52};   
        radix_sort(a);   
     printf("\n Radix sorted is: \n");   
   for(i=0;i<10;i++)    
      printf(" %d\t", a[i]);
  }   
 int largest(int a[]) 
 {        
 int larger=a[0], i;     
  for(i=1;i<10;i++)   
   {       
   if(a[i]>larger)  
        larger = a[i]; 
     }     
 return larger; 
}  
void radix_sort(int a[])  
{  
    int bucket[10][10], bucket_count[10];  
    int i, j, k, remainder, NOP=0, divisor=1, larger, pass;  
    larger = largest(a);  
    while(larger>0)    
  {        
  NOP++;          larger/=10;     
 }      
for(pass=0;pass<NOP;pass++) // Initialize the buckets 
     {     
     for(i=0;i<10;i++)  
        bucket_count[i]=0; 
         for(i=0;i<10;i++) 
         {    // sort the numbers according to the digit at passth place                        remainder = (a[i]/divisor)%10;             
 bucket[remainder][bucket_count[remainder]] = a[i];   
           bucket_count[remainder] += 1;         
 }        
  // collect the numbers after PASS pass          i=0;          for(k=0;k<10;k++)  
        {    
          for(j=0;j<bucket_count[k];j++)    
          {           
       a[i] = bucket[k][j];                 i++;           
   }      
    }       
   divisor *= 10;    
    } 
 } 

Output:

Radix sort is: 
14 
21 
35 
52 
65 
75 
365 
652 
785 
3214

Related Topics

Function to Create a Copy of Binary Search Tree

Implementation // creating a new hashmap in the language C++ that will help us clone a binary tree with arbitrary pointers.  #include<iostream> #include<unordered_map> using namespace std; /* A given binary tree has a record, a...

9 minutes read.

What is the difference between DFS and BFS?

What is BFS? BFS is generally known as the low level traversal. As we already know that it stands for breadth first search and is mainly used in the queue data...

4 minutes read.

What Is Dfs Algorithm in Data Structures

DFS stands for Depth First Search. Generally, it is a repetitive or decidable type of algorithm which is basically used in identifying all the vertices or nodes of a graph...

5 minutes read.

CSS Text-indent

Text-indent The Text-indent property of CSS is used to set any first line’s indentation inside a text’s block. It describes the horizontal space amount that puts establish before the text line. It...

3 minutes read.

Data Structure Infix to Prefix Conversion

Infix to Prefix Conversion In present time, we use the infix expression in our daily life but the computers are not able to understand this format because they need to keep...

4 minutes read.

What is a Threaded Binary Tree?

When we consider those binary trees that are interlinked with each other, we do come across the fact that the fields present in there do consist of NULL values that...

3 minutes read.

Time Complexity of Selection Sort in Data Structure

What is Time Complexity? The term “Time complexity” can be defined as the number of times executions made of a particular sequence of instructions and not the total amount of time...

3 minutes read.

Blowfish algorithm

The Blowfish algorithm is the very first encryption algorithm which is symmetric. It was firstly used as an alternate algorithm for the DES algorithm. It was designed by Bruce Steiner...

3 minutes read.

Primitive Data Structure in C

The data structure is a logical or mathematical model for organizing and structuring the main memory or elements. We can classify the data structures in two ways one is primitive, and...

10 minutes read.

Huffman tree in Data Structures

The Huffman trees in the field of data structures are pretty impressive in their work. They are generally treated as the binary tree, which is linked with the least external...

6 minutes read.

Operations on Queue in Data Structures

A queue is a linear structure where operations are done in a specific sequence. Queues are abstract data structures that are comparable to Stacks. A queue, unlike a stack, is...

8 minutes read.

Heap Sort in Data Structure

Heap Sort A heap is a tree-based data structure that has specific properties. Heap is always a complete binary tree (CBT). That is, all the nodes of the tree are completely filled.If...

6 minutes read.

Given a Binary Tree, Print the Pre-order Traversal in Recursive

Implementation #include <stdio.h> #include <stdlib.h>   /* Creating a binary tree node that consists of some data along with the pointer to the left and right child.  */ struct __nod {     int record;     struct...

4 minutes read.

Depth of binary tree

We all know that a binary tree is a kind of tree that helps us maintain the order and balance of the tree. It is a type of tree in...

4 minutes read.

Binary Tree in Data Structures

What is a Binary Tree in Data Structures? The term binary itself means bi, which implies two of anything. So very clearly, we know we present the trees in the form...

6 minutes read.

Create a binary search tree

Implementation In this section of the article, we will see the usage and mechanism of how we will create a given binary tree. Let's observe these in more depth and then...

7 minutes read.

Difference between Stack and Queue

In this article, we will learn about the major differences between Stack and Queue data structures. What is a stack? Stack – A stack is an abstract data structure defined as the...

3 minutes read.

Treap data structure

In this article, we will discuss the treap data structure. The word treap is a combination of 'tree' and 'heap'. So, treap data structure is a combination of a heap...

8 minutes read.

Convert a Binary Tree into a Binary Search Tree

Implementation #include <stdio.h>   #include <stdlib.h>       //creating a node of the binary tree.  struct __nod{       int record;       struct __nod *Lft;       struct __nod *Rt;   };       // presenting the root of the binary tree.   struct...

5 minutes read.

Identical Linked Lists

Identical Linked Lists In this problem, we have given two linked lists, and we need to check whether the given linked lists are identical or not. Identical means they have the...

4 minutes read.