当前位置: 首页 > news >正文

海口网站建设电话江苏工程信息网

海口网站建设电话,江苏工程信息网,做网站网页维护手机App开发,建设部领导干部官方网站基数排序 基本思想 基数排序其实就是依靠多位关键字进行排序#xff0c;现在我们有一个数据为101#xff0c;那么“101”就是一个三位 关键字#xff0c;分别为#xff1a;“百位-1”、“十位-0”、“个位-1”。 此时我们就可以按照三位关键字进行排序现在我们有一个数据为101那么“101”就是一个三位 关键字分别为“百位-1”、“十位-0”、“个位-1”。 此时我们就可以按照三位关键字进行排序一般而言排序有两种“最高位优先MSD”、“最 低位优先LSD”。 名词概念 基数 还是对于上面的数据101它是一个三位关键字分别为“1”、“0”、“1”对于每一位关键字它 的取值范围为“0-9”共十种可能我们把这些可能性称为“基数”简写为r因此可以说 101基数为10r10。 关键字位数 仍然对于数据101来说共有三位因此它的关键字位数就是三位分别为“百位”、“十位”、“个 位”。 代码思路 基数排序的精髓在于“分配”、“收集”。 每次按关键字进行分配当前趟数的关键字相同的数据分配到一个队列中。 每次分配完毕后都需要将不同队列的数据连接在一起形成一个新的链表。 我们需要使用链式结构来存储数据同时创建r基数个队列用来辅助存储我们交换中的数 据。 代码实现 #includestdio.h #includemath.h #define MAX_KEY 8 //关键字最大位数 #define RADIX 10 //关键字基数 #define MAX_SPACE 100 //数据单元大小 typedef struct{int keys; //关键字 int next; //下一个数据位置 }SLnode; //静态链表单元 typedef struct{SLnode R[MAX_SPACE1]; //R[0]做哨兵单元 int length; //静态链表中数据长度 int keynum; //关键字位数 }SLList; typedef int Queue[RADIX]; //静态队列void InitMySLList(SLList *L) {int Sample_Data[10] {614,738,921,485,637,101,215,530,790,306};int i;L-length 10; //链表长度 L-keynum 3; //关键字位数for(i1;iL-length;i){L-R[i].keys Sample_Data[i-1]; //初始化数据 }for(i0;iL-length;i){L-R[i].next i 1; //修改next域,组建成一个静态链表. } L-R[L-length].next 0; //尾结点指向0 }int GetKey(int n,int i) //求第i位关键字,n为数据 {int k;k ((int)(n / pow(RADIX,i))) % RADIX;return k; }void Distribute(SLList *L,int i,Queue f,Queue e) //第i趟分配函数 {//静态链表中的0-i-1位关键字已经有序//队列中存储的是数据在静态链表中的位置(索引)//实现按第i位关键字有序建立RADIX个队列.//f,e分别代表队头指针和队尾指针int j,p;for(j0;jRADIX;j){ //初始化队列 f[j] 0;e[j] 0;}for(pL-R[0].next;p;pL-R[p].next){j GetKey(L-R[p].keys,i); //求第i位关键字 if(f[j] 0) //队列为空时,直接从队头入第一个数据 f[j] p;else //队列不为空,需要从队尾入数据,也就是队列中最后一个元素的next域 L-R[e[j]].next p;e[j] p; //队尾指针存储队列中的最后一个数据. } }void Collections(SLList *L,int i,Queue f,Queue e) //第i趟收集 {int j,t;for(j0;f[j]0;j); //找到第一个非空队列L-R[0].next f[j]; //R[0].next 指向第一个非空队列队头t e[j]; //t指向第一个非空队列队尾while(jRADIX){for(j;jRADIX-1!f[j];j);if(f[j] jRADIX){ //jRADIX不能漏 L-R[t].next f[j]; //当前队尾和下一个队头相连接 t e[j]; //t存储最新队列的队尾 }}L-R[t].next 0; //队尾指向0 }void RaDixSort(SLList *L) //基数排序 {Queue f,e;int i;for(i0;iL-keynum;i){Distribute(L,i,f,e);Collections(L,i,f,e);} }void OutPutMyRadix(SLList *L) //打印结果 {int i;for(iL-R[0].next;i;iL-R[i].next){printf(%d ,L-R[i].keys);} } int main() {SLList L;InitMySLList(L);RaDixSort(L);OutPutMyRadix(L);return 0; }
http://www.zqtcl.cn/news/767769/

相关文章:

  • 沈阳php网站建网站需要学什么
  • WordPress多站点绑定域名百度帐号注册
  • 网站营销队伍网站建设明薇通网络
  • 做网站的公司重庆万网x5 wordpress
  • 印刷设计营销网站网站设置成黑白
  • 百度自助建站官网上海徐汇网站建设
  • 网站定制 北京贵阳网站建设公司哪家好
  • 如何做logo模板下载网站企业策划
  • 合肥做网站的公司讯登欧亚达网站是哪家公司做的
  • 网站模板带有sql后台下载企业网站建设平台的功能
  • 网站推广的实际案例电子商务网站建设的要求
  • 永平建设有限公司网站2023一般纳税人企业所得税怎么算
  • 创业网站推广怎么做简单的网站首页
  • 外贸网站模板 外贸网站制作如何推广宣传一个品牌
  • 中企动力企业邮箱 手机邮箱河南网站建设优化推广
  • 广州seo网站多少钱王野天津音乐广播电台图片
  • 东莞网站制作十强怎么做一个链接网站
  • 深圳网站设计 建设首选wordpress 获取父页面
  • 大兴企业网站建设公司wordpress谷歌字体优化
  • 哈尔滨建设银行网站网站建设运营服务商
  • 重庆本地建站企业网站建设流程及费用
  • 网站建设需要用到那些语言简述网站建设和推广评价指标
  • 17网站一起做 佛山印刷做网站网上接单
  • 网站建设步骤 优帮云网站建设首选定制开发
  • 专门做家居的网站国内企业网站设计
  • 做网站时怎么取消鼠标悬停性价比最高网站建设
  • 三网合一网站模板网站上内容列表怎么做
  • 鲜花商城网站建设西安房产网站大全
  • 家庭宽带做网站空间一个数据库可以做几个网站
  • 环境设计公司排名搜索引擎seo是什么意思