随机十个数,使用基数排序使数据集有序的C语言代码
时间: 2024-02-26 13:58:06 浏览: 67
基数排序C语言实现
好的,以下是随机生成十个数并使用基数排序使数据集有序的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 计算数字 num 在第 digit 位的值
int get_digit(int num, int digit) {
return (num / digit) % 10;
}
// 基数排序
void radix_sort(int nums[], int size) {
int max_num = nums[0];
for (int i = 1; i < size; i++) {
if (nums[i] > max_num) {
max_num = nums[i];
}
}
int digit = 1;
while (digit <= max_num) {
int buckets[10][size];
int bucket_sizes[10] = {0};
for (int i = 0; i < size; i++) {
int d = get_digit(nums[i], digit);
buckets[d][bucket_sizes[d]] = nums[i];
bucket_sizes[d]++;
}
int index = 0;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < bucket_sizes[i]; j++) {
nums[index] = buckets[i][j];
index++;
}
}
digit *= 10;
}
}
int main() {
// 生成随机数数组
int nums[10];
for (int i = 0; i < 10; i++) {
nums[i] = rand() % 100;
}
printf("随机数数组:");
for (int i = 0; i < 10; i++) {
printf("%d ", nums[i]);
}
printf("\n");
// 基数排序
radix_sort(nums, 10);
printf("排序后的数组:");
for (int i = 0; i < 10; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
输出结果类似于:
```
随机数数组:87 57 86 71 9 59 96 45 5 39
排序后的数组:5 9 39 45 57 59 71 86 87 96
```
以上代码中,我们先生成了一个长度为 10 的随机数数组 `nums`,然后使用基数排序将其排序后输出。在排序过程中,我们首先计算出最大值 `max_num`,然后对于每一位 `digit` 进行排序。具体来说,我们遍历每个数字,并将其按照当前位的值放入对应的桶中,最后将桶中的数字按顺序拼接在一起,得到排序后的结果 `nums`。
阅读全文