Radix Sort
It is not based on comparision-based algorithms, instead it is an integer sorting algorithm that sorts data with integer keys by grouping the keys by individual digits that share the same significant position and value.
| Radix sort takes in a list of n integers which are in base b (the radix) and so each number has at most d digits where d = | log_b(k) +1 | and k is the largest number in the list. |
Algorithm
1) For each digit i where i varies from least significant digit to the most significant digit. 2) Sort input array using counting sort according to the i’th digit.
Example
Let's take a slice
213, 003, 045, 067, 078, 001, 034, 456, 044
Create buckets based on the digit, on base 10
Iteration 1:
0-
1- 1
2-
3- 213, 3
4- 34, 44
5- 45
6- 456
7- 67
8- 78
9-
push numbers to new slice sequentially from bucket
001, 213, 003, 034, 044, 045, 456, 067, 078
Create buckets based on the digit, on base 100
Iteration 2:
0- 1, 3
1- 213
2-
3-34,
4- 44, 45,
5- 456
6- 67
7- 78
8-
9-
001, 003, 213, 034, 044, 045, 456, 067, 078
Create buckets based on the digit, on base 1000
Iteration 3:
0- 1, 3, 33, 34, 45, 67, 78
1- 213
4 - 456
1, 3, 33, 34, 45, 67, 78, 213, 456
Complexity
Time Complexity: o(kn)
where k is total number of digits in the largest number bcs that is number of iterations