数据结构-基数排序
来源:互联网 发布:讲文明知礼仪内容15个 编辑:程序博客网 时间:2024/06/07 10:20
基数排序(Radix Sorting)之前的排序都是关键字相互比较和移动完成。
基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。
分为:①多关键字排序,②链式基数排序两种
①多关键字排序,还分为两种方法:一,最高位优先,二,最低位优先
下面是最低位优先的方法,个十百千,的顺序
初始 个位 -> 十位 -> 百位 ->千位
7467 6792 9134 9134 1239
1247 9134 1239 9187 1247
3275 3275 1247 1239 3275
6792 4675 7467 1247 4675
9187 7467 3275 3275 6792
9134 1247 4675 7467 7467
4675 9187 9187 4675 9134
1239 1239 6792 6792 9187
输入:一张有n个数的表L ={ a1,a2,...,an } 和k位数字
过程:准备10个空表L[10][N],枚举1-k位( j ),每次遍历数组a(下标 i ),数a[ i] 在第 j 位上为m,放在L[m ][0]增1(L[m][0]为该表里的数字个数),数a[i ]插在L[ m ]后面,遍历完数组后,重新将L[10][N]里的数字按顺序重新放回a[]数组里,继续枚举 j
输出:按非降序排列的L。
#include <cstdio> #include <cstring> #include <iostream> using namespace std; const int N=30;void RadixSort(int *a,int k,int n){int tm,m,p;int L[10][N];//L[m][0]中存放为该表个数for(int j=1;j<=k;j++){for(int i=0;i<10;i++) L[i][0]=0; for(int i=1; i<=n; i++){//取出数放到L里 tm=a[i];for(int l=1;l<j;l++) tm/=10;m=tm%10;L[m][0]++; p=L[m][0]; L[m][p]=a[i];}/*printf("---%d----\n",j);for(int i=0;i<10;i++){printf("%d: ",i);for(int l=0;l<=L[i][0];l++){printf("%d ",L[i][l]);}printf("\n");}*/tm=1;for(int i=0;i<10;i++){for(int j=1;j<=L[i][0];j++){a[tm++]=L[i][j];}}/*for(int i=0;i<tm;i++){printf("%d ",a[i]);}printf("\n");*/}}int main(){int a[N]={0,7467,1247,3275,6792,9187,9134,4675,1239};int len=8;RadixSort(a,4,len);for(int i=1;i<=len;i++){printf("%d ",a[i]);}return 0;}
②链式基数排序,
就是将上述程序中的表L[10][N] 变成十个链表,思想差不多,变成链表后,可以有效的节省空间。
就不会每个暂存表 浪费多余的长度。
基数排序到此结束。
- 数据结构-基数排序
- 数据结构 排序 基数排序
- 基数排序 C语言数据结构
- 数据结构-算法: 基数排序
- 【数据结构】基数排序的哈希表
- 数据结构课程设计----基数排序
- 数据结构_基数排序
- [数据结构与算法]基数排序
- 数据结构基础(15) --基数排序
- [数据结构] 基数排序算法
- 数据结构系列之基数排序
- 数据结构基础(15) --基数排序
- 数据结构 基数排序的实现
- 【数据结构】-归并排序,基数排序
- 数据结构基础7.7:基数排序
- 数据结构基础(15) --基数排序
- 数据结构之基数排序
- 数据结构——基数排序
- MyBatis--关联关系查询--多对一--多表连接查询
- python常见数据处理方法
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)【solved:12 / 13】
- PYTHON
- 大数据+互联网金融时代,“可以融资的BI”强势来袭!
- 数据结构-基数排序
- HDU-2354-Another Brick in the Wall
- hdu 1172 猜数字 (枚举)
- React 实用知识点
- 获取分组最新数据
- ACM-Billboard
- 第九单元总结
- 3.4 WebView显示网页
- Spring MVC中静态变量注解初始化