分配排序之--基数排序
来源:互联网 发布:sql server2005卸载 编辑:程序博客网 时间:2024/05/17 01:02
#include<stdio.h>#include<malloc.h>#define MAXNUM 1000//******************************************基数排序**********************************************************int getdigit(int x,int d) { int a[] = {1, 1, 10, 100}; //最大三位数,所以这里只要百位就满足了。 return (x/a[d]) % 10; } void Radix_Sort(int A[], int n,int d){ int radix=10; int *Bucket = (int *)malloc(sizeof(int)*radix); //可以 int Bucket[MAXNUM] int *Result = (int *)malloc(sizeof(int)*n); //不能 int Result[n],n没确定for(int k=1;k<=d;k++){for (int i = 0; i < radix; i++) //把1000个桶初始化Bucket[i] = 0;for (i = 0; i < n; i++) Bucket[ getdigit(A[i],k) ] ++; // Bucket[A[i]]---值=A[i]的个数for (i = 1; i < radix; i++)Bucket[i] = Bucket[i - 1] + Bucket[i]; //Bucket[i]---值<=i的个数 for (i = n - 1; i >= 0; i--) Result[--Bucket[getdigit(A[i],k)] ] = A[i]; //排序for (i = 0; i < n; i++) A[i] = Result[i]; //输出到原始数组}free(Bucket); free(Result);} //*************************************************测试**********************************************void main(){ int n;printf("请输入待排序的个数:");scanf("%d",&n); int *A = (int *)malloc(sizeof(int)*n);printf("输入排序前:\n");for (int i = 0; i < n; i++) scanf("%d",&A[i]); Radix_Sort(A, n, 3);printf("输出排序后:\n");for (i = 0; i < n; i++) printf("%d ", A[i]); //等价于 *(A+i)getchar();getchar();}
阅读全文
0 0
- 分配排序之--基数排序
- 分配排序之--桶排序,基数排序
- 分配排序-基数排序
- 内部排序系列 之 分配排序与基数排序
- 稳定排序之基数排序
- 排序算法之基数排序
- 线性排序之基数排序
- 排序系列之基数排序
- 排序算法之基数排序
- 排序算法之基数排序
- 排序之基数排序
- 排序总结之基数排序
- 排序之基数排序
- 排序算法之基数排序
- Java 排序之 基数排序
- 线性排序之:基数排序
- 排序算法之基数排序
- 八大排序之基数排序
- liunx 定位IO瓶颈方法
- TP-LINK R473G 端口映射与回流/回环设置
- LINUX下磁盘IO性能测试评估
- 基于Zetta(Node.js)的数据接收端server中,可接收数量不定传感数据的IoT APP实现
- Windows安装Flask
- 分配排序之--基数排序
- USACO-Section1.5 Prime Palindromes
- List<map>转List<bean>
- 获取成员函数地址及获取函数地址
- 算法
- 侧滑菜单栏+viewpager+tablayout+fragment
- Swiper 有空多学习
- Linux相关的小知识点
- Prime Ring Problem(DFS)