您的位置:首页 > 娱乐 > 八卦 > 全国疫情风险区域汇总_石家庄网络科技有限公司排行_网络营销是做什么的工作_最新域名查询ip

全国疫情风险区域汇总_石家庄网络科技有限公司排行_网络营销是做什么的工作_最新域名查询ip

2024/12/23 9:49:24 来源:https://blog.csdn.net/bbppooi/article/details/144173142  浏览:    关键词:全国疫情风险区域汇总_石家庄网络科技有限公司排行_网络营销是做什么的工作_最新域名查询ip
全国疫情风险区域汇总_石家庄网络科技有限公司排行_网络营销是做什么的工作_最新域名查询ip
#include <stdio.h>
#include <stdlib.h>// 获取数组中的最大值
int GetMax(int* a, int n) {int max = a[0];for (int i = 1; i < n; i++) {if (a[i] > max) {max = a[i];}}return max;
}// 对数组按照某个位数进行计数排序
void CountingSortForRadix(int* a, int n, int exp) {int* output = (int*)malloc(n * sizeof(int));int count[10] = {0}; // 因为是按位排序,只有 0-9 共 10 个数字// 统计每个位上的出现次数for (int i = 0; i < n; i++) {int digit = (a[i] / exp) % 10;count[digit]++;}// 计算累积计数for (int i = 1; i < 10; i++) {count[i] += count[i - 1];}// 按当前位排序,将数据放入输出数组for (int i = n - 1; i >= 0; i--) {int digit = (a[i] / exp) % 10;output[count[digit] - 1] = a[i];count[digit]--;}// 将排序结果复制回原数组for (int i = 0; i < n; i++) {a[i] = output[i];}free(output);
}// 基数排序主函数
void RadixSort(int* a, int n) {int max = GetMax(a, n); // 找到数组中最大值for (int exp = 1; max / exp > 0; exp *= 10) {CountingSortForRadix(a, n, exp);}
}// 测试函数
int main() {int a[] = {170, 45, 75, 90, 802, 24, 2, 66};int n = sizeof(a) / sizeof(a[0]);printf("Before sorting: ");for (int i = 0; i < n; i++) {printf("%d ", a[i]);}printf("\n");RadixSort(a, n);printf("After sorting: ");for (int i = 0; i < n; i++) {printf("%d ", a[i]);}printf("\n");return 0;
}

测试结果 

详细可见排序学习整理(3)-CSDN博客 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com