- **Radix Sort** is a non-comparative sorting algorithm that sorts numbers digit by digit, starting from the least significant digit to the most significant digit, using a stable sub-sorting algorithm (such as counting sort).
-
Steps:
Sort the elements based on the least significant digit.
Move to the next more significant digit and repeat the sorting.
Continue this process until all digits are processed.
Time Complexity:
Best, Average, Worst Case:O(nk), where n is the number of elements and k is the number of digits.
def radix_sort(arr): def counting_sort(arr, exp): output = [0] * len(arr) count = [0] * 10 # Count occurrences of digits for num in arr: index = num // exp count[index % 10] += 1 # Calculate positions for i in range(1, 10): count[i] += count[i - 1] # Place the elements in their sorted position for i in range(len(arr) - 1, -1, -1): num = arr[i] index = num // exp output[count[index % 10] - 1] = num count[index % 10] -= 1 # Copy the sorted output to the original array for i in range(len(arr)): arr[i] = output[i] # Get the maximum element max_val = max(arr) exp = 1 while max_val // exp > 0: counting_sort(arr, exp) exp *= 10 return arr# Example usagearr = [170, 45, 75, 90, 802, 24, 2, 66]print("Sorted array is:", radix_sort(arr))