• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar
  • Skip to secondary sidebar

GoHired

Interview Questions asked in Google, Microsoft, Amazon

Join WeekEnd Online Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

  • Home
  • Best Java Books
  • Algorithm
  • Internship
  • Certificates
  • About Us
  • Contact Us
  • Privacy Policy
  • Array
  • Stack
  • Queue
  • LinkedList
  • DP
  • Strings
  • Tree
  • Mathametical
  • Puzzles
  • Graph

How Radix sort works

September 4, 2014 by Dhaval Dave

Radix sort is simple and unique sorting method.
It sorts number with LSD and MSD ( Lease Significant Digit to Most Significant Digit)

Radix Sort puts the elements in order by comparing the digits of the numbers. I will explain with an example.


Consider the following 9 numbers:

493   812   715   710   195   437   582   340   385

Step 1) We should start sorting by comparing and ordering the one’s digits:

Digit Sublist
0   340 710
1
2   812 582
3   493
4
5   715 195 385
6
7   437
8
9

Notice that the numbers were added onto the list in the order that they were found, which is why the numbers appear to be unsorted in each of the sublists above. Now, we gather the sublists (in order from the 0 sublist to the 9 sublist) into the main list again:

340   710   812   582   493   715   195   385   437
Step 2) Now, the sublists are created again, this time based on the ten’s digit:
Digit Sublist
0
1   710 812 715
2
3   437
4   340
5
6
7
8   582 385
9   493 195
Now the sublists are gathered in order from 0 to 9:
710   812   715   437   340   582   385   493   195
Step 3) the sublists are created according to the hundred’s digit:

Digit Sublist
0
1   195
2
3   340 385
4   437 493
5   582
6
7   710 715
8   812
9
At last, the list is gathered up again:
195   340   385   437   493   582   710   715   812
Code :

#include<iostream>
using namespace std;

// A utility function to get maximum value in arr[]
int getMax(int arr[], int n)
{
    int mx = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] > mx)
            mx = arr[i];
    return mx;
}

// A function to do counting sort of arr[] according to
// the digit represented by exp.
void countSort(int arr[], int n, int exp)
{
    int output[n]; // output array
    int i, count[10] = {0};

    // Store count of occurrences in count[]
    for (i = 0; i < n; i++)
        count[ (arr[i]/exp)%10 ]++;

    // Change count[i] so that count[i] now contains actual position of
    // this digit in output[]
    for (i = 1; i < 10; i++)
        count[i] += count[i – 1];

    // Build the output array
    for (i = n – 1; i >= 0; i–)
    {
        output[count[ (arr[i]/exp)%10 ] – 1] = arr[i];
        count[ (arr[i]/exp)%10 ]–;
    }

    // Copy the output array to arr[], so that arr[] now
    // contains sorted numbers according to curent digit
    for (i = 0; i < n; i++)
        arr[i] = output[i];
}

// The main function to that sorts arr[] of size n using Radix Sort
void radixsort(int arr[], int n)
{
    // Find the maximum number to know number of digits
    int m = getMax(arr, n);

    // Do counting sort for every digit. Note that instead of passing digit
    // number, exp is passed. exp is 10^i where i is current digit number
    for (int exp = 1; m/exp > 0; exp *= 10)
        countSort(arr, n, exp);
}

// A utility function to print an array
void print(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << ” “;
}

// Driver program to test above functions
int main()
{
    int arr[] = {170, 45, 75, 90, 802, 24, 2, 66};
    int n = sizeof(arr)/sizeof(arr[0]);
    radixsort(arr, n);
    print(arr, n);
    return 0;
}

Output:

2  24  45  66  75  90  170  802


References:
http://en.wikipedia.org/wiki/Radix_sort
Code : http://www.geeksforgeeks.org/radix-sort/

Similar Articles

Filed Under: Interview Questions, problem Tagged With: Sorting

Reader Interactions

Primary Sidebar

Join WeekEnd Online/Offline Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

Join WeekEnd Online/Offline Batch from 4-April-2020

WhatsApp us

Secondary Sidebar

Custom Search

  • How I cracked AMAZON
  • LeetCode
  • Adobe
  • Amazon
  • Facebook
  • Microsoft
  • Hacker Earth
  • CSE Interview

Top Rated Questions

Regular Expression Matching

Search element in a matrix with all rows and columns in sorted order

Calculate price of parking from parking start end time prices

Test Cases for Round Function

Connect n ropes with minimum cost

Minimum insertions to form a palindrome

Find shortest distances between every pair of vertices ( Dynamic Programming Floyd Warshall Algorithm)

Given a sorted array and a number x, find the pair in array whose sum is closest to x

Subset Sum Problem Dynamic programming

C++ OOPs Part1

In Given LinkedList Divide LL in N Sub parts and delete first K nodes of each part

Memory Efficient LinkedList

Daughter’s Age VeryGood Puzzle

Find position of the only set bit

Maximum sum contiguous subarray of an Array

Reversal of LinkedList

The greedy coins game Dynamic Programming

Convert Decimal to Roman numbers / Romanizer HackerEarth Code

Hackerearth : Counting Subarrays

Client Server C program

N teams are participating. each team plays twice with all other teams. Some of them will go to the semi final. Find Minimum and Maximum number of matches that a team has to win to qualify for finals ?

TicTacToe Game As Asked in Flipkart

Number of Islands BFS/DFS

How strtok() Works

Implement a generic binary search algorithm for Integer Double String etc

simple sql injection

Length of the longest substring without repeating characters

Printing each word reverse in string

Flipkart SDET Interview Experience

Singly linked list

Copyright © 2025 · Genesis Framework · WordPress · Log in