Вот пример программы на C для поразрядной сортировки:
#include<stdio.h>
// Function to get the maximum element from an array
int getMax(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max)
max = arr[i];
}
return max;
}
// Using counting sort to sort the elements based on a specific place value
void countingSort(int arr[], int n, int exp) {
int output[n];
int count[10] = {0};
// Store count of occurrences in count[]
for (int i = 0; i < n; i++)
count[(arr[i] / exp) % 10]++;
// Change count[i] so that count[i] contains the actual position of this digit in output[]
for (int i = 1; i < 10; i++)
count[i] += count[i - 1];
// Build the output array
for (int 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[] contains the sorted numbers according to the current digit
for (int i = 0; i < n; i++)
arr[i] = output[i];
}
// Radix sort function
void radixSort(int arr[], int n) {
// Find the maximum element to determine the number of digits
int max = getMax(arr, n);
// Perform counting sort for every digit
for (int exp = 1; max / exp > 0; exp *= 10)
countingSort(arr, n, exp);
}
// Function to print an array
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}
// Testing the radix sort algorithm
int main() {
int arr[] = {170, 45, 75, 90, 802, 24, 2, 66};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
printArray(arr, n);
radixSort(arr, n);
printf("Sorted array: ");
printArray(arr, n);
return 0;
}
Эта программа реализует алгоритм поразрядной сортировки на языке C. Поразрядная сортировка — это алгоритм несравнительной сортировки, который сортирует целые числа путем обработки отдельных цифр. Он начинается с сортировки чисел по их младшей значащей цифре и постепенно движется к самой старшей цифре.
Программа начинается с определения трех функций: getMaxдля поиска максимального элемента в массиве, countingSortдля выполнения сортировки подсчетом на основе определенного разрядного значения и radixSortдля реализации алгоритма поразрядной сортировки.
В функции mainопределяется пример массива, а его исходная и отсортированная версии печатаются с помощью функции printArray.