- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Radix Sort
Radix sort is a non-comparative sorting algorithm. This sorting algorithm works on the integer keys by grouping digits which share the same position and value. The radix is the base of a number system. As we know that in the decimal system the radix or base is 10. So for sorting some decimal numbers, we need 10 positional boxes to store numbers.
The complexity of Radix Sort Technique
- Time Complexity: O(nk)
- Space Complexity: O(n+k)
Input and Output
Input: The unsorted list: 802 630 20 745 52 300 612 932 78 187 Output: Data before Sorting: 802 630 20 745 52 300 612 932 78 187 Data after Sorting: 20 52 78 187 300 612 630 745 802 932
Algorithm
radixSort(array, size, maxDigit)
Input − An array of data, and the total number in the array, digit count of max number
Output − Sorted array.
Begin define 10 lists as pocket for i := 0 to max -1 do m = 10^i+1 p := 10^i for j := 0 to n-1 do temp := array[j] mod m index := temp / p pocket[index].append(array[j]) done count := 0 for j := 0 to radix do while pocket[j] is not empty array[count] := get first node of pocket[j] and delete it count := count +1 done done End
Example
#include<iostream> #include<list> #include<cmath> using namespace std; void display(int *array, int size) { for(int i = 0; i<size; i++) cout << array[i] << " "; cout << endl; } void radixSort(int *arr, int n, int max) { int i, j, m, p = 1, index, temp, count = 0; list<int> pocket[10]; //radix of decimal number is 10 for(i = 0; i< max; i++) { m = pow(10, i+1); p = pow(10, i); for(j = 0; j<n; j++) { temp = arr[j]%m; index = temp/p; //find index for pocket array pocket[index].push_back(arr[j]); } count = 0; for(j = 0; j<10; j++) { //delete from linked lists and store to array while(!pocket[j].empty()) { arr[count] = *(pocket[j].begin()); pocket[j].erase(pocket[j].begin()); count++; } } } } int main() { int n, max; cout << "Enter the number of elements: "; cin >> n; cout << "Enter the maximum digit of elements: "; cin >> max; int arr[n]; //create an array with given number of elements cout << "Enter elements:" << endl; for(int i = 0; i<n; i++) { cin >> arr[i]; } cout << "Data before Sorting: "; display(arr, n); radixSort(arr, n, max); cout << "Data after Sorting: "; display(arr, n); }
Output
Enter the number of elements: 10 Enter the maximum digit of elements: 3 Enter elements: 802 630 20 745 52 300 612 932 78 187 Data before Sorting: 802 630 20 745 52 300 612 932 78 187 Data after Sorting: 20 52 78 187 300 612 630 745 802 932
- Related Articles
- Radix sort - JavaScript
- Radix sort in Javascript?
- Java Program for Radix Sort
- C Program for Radix Sort
- C++ Program to Implement Radix Sort
- Parse and format to arbitrary radix
- Convert BigInteger into another radix number in Java
- What is JSlint error "missing radix parameter" in JavaScript?
- Merge sort vs quick sort in Javascript
- Difference Between Insertion Sort and Selection Sort
- Difference Between Bubble Sort and Selection Sort
- Difference Between Quick Sort and Merge Sort
- Python Program for Odd-Even Sort / Brick Sort
- Bubble Sort
- Bucket Sort

Advertisements