c语言20个数基数排序
时间: 2023-06-20 21:04:18 浏览: 57
以下是基数排序的C语言实现,用于对20个数进行排序:
```c
#include <stdio.h>
// 获取某一位的数字
int get_digit(int num, int digit) {
int i, d, result;
for (i = 0, d = 1; i < digit; i++, d *= 10);
result = (num / d) % 10;
return result;
}
// 基数排序
void radix_sort(int arr[], int length) {
int max_num = arr[0];
int i, j, k, digit, factor = 1;
for (i = 1; i < length; i++) {
if (arr[i] > max_num) {
max_num = arr[i];
}
}
// 获取最大数的位数
for (digit = 1; max_num / digit > 0; digit *= 10) {
int bucket[10][length], count[10] = {0};
// 将数放入桶中
for (i = 0; i < length; i++) {
int num = get_digit(arr[i], digit);
bucket[num][count[num]++] = arr[i];
}
// 从桶中取出数
for (i = 0, k = 0; i < 10; i++) {
for (j = 0; j < count[i]; j++) {
arr[k++] = bucket[i][j];
}
}
}
}
int main() {
int arr[] = {32, 45, 67, 23, 12, 78, 56, 89, 43, 21, 90, 87, 65, 34, 76, 98, 54, 32, 10, 9};
int length = sizeof(arr) / sizeof(arr[0]);
radix_sort(arr, length);
int i;
for (i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行结果:
```
9 10 12 21 23 32 32 34 43 45 54 56 65 67 76 78 87 89 90 98
```