没有网站可以做seo吗,外资公司代理注册,镇江网页设计师招聘,做配资 怎么在网站联系客户一、问题描述
实现英文单词按字典序排列的基数排序算法 编写一个程序#xff0c;采用基数排序方法将一组英文单词按字典顺序排 列。假设单词均由小写字母或空格构成#xff0c;最长的单词有 MaxLen 个 字母#xff0c;用相关数据进行测试并输出各趟的排序结果。 用例#…一、问题描述
实现英文单词按字典序排列的基数排序算法 编写一个程序采用基数排序方法将一组英文单词按字典顺序排 列。假设单词均由小写字母或空格构成最长的单词有 MaxLen 个 字母用相关数据进行测试并输出各趟的排序结果。 用例R[] {“ while”, “if”, “if else”, “for”, “do while”, “ switch”} 排序结果 “do while”, “for”, “if”, “if else”, “ while”, “ switch”
二、问题解决
#include stdio.h
#include malloc.h #include string.h
#define MAX_LEN 10 // 单词的最大长度
#define RADIX 27 // 基数 rd 为 27,分
别对应 ,a,...,z typedef char String[MAX_LEN 1]; // 定义 String 为字
符数组类型
typedef struct node
{ String word; struct node *next;
}link_node; // 单链表结点类型 //输出单词 void disp_word(String R[], int n)
{ int i; printf( ); for(i 0; i n; i) { printf( %s , R[i]); } printf(\n);
} //对单词进行预处理,用空格填充尾部至 MAX_LEN 长 void pre_process(String R[], int n)
{ int i, j; for(i 0; i n; i) { if(strlen(R[i]) MAX_LEN) { for(j strlen(R[i]); j MAX_LEN; j) { R[i][j] ; } R[i][j] \0; } }
} //恢复处理,删除预处理时填充的尾部空格 void end_process(String R[], int n)
{ int i, j; for(i 0; i n; i) { for(j MAX_LEN - 1; R[i][j] ; j--) R[i][j 1] \0; }
} //按关键字的第 j 个分量进行分配进入此过程时各队列一定为空 void distribute(String R[], link_node *head[], link_node *tail[],
int j, int n)
{ int i; // 循环变量 int k; // 队列编号 link_node *p; for(i 0; i n; i) // 依次扫描
R[i],将其入队 { if(R[i][j] ) // 空格时放入 0
号队列中,a放入 1 号队列中 k 0; else k R[i][j] - a 1; p (link_node *)malloc(sizeof(link_node)); // 创建新结点 strcpy(p-word, R[i]); p-next NULL; if(head[k] NULL) { head[k] p; tail[k] p; } else { tail[k]-next p; tail[k] p; } }
} //依次将各非空队列中的结点收集起来并释放各非空队列中的所有结点 void collect(String R[], link_node *head[])
{ int i; int k 0; link_node *pre, *p; for(i 0; i RADIX; i) { if(head[i] ! NULL) { pre head[i]; p pre-next; while(p ! NULL) { strcpy(R[k], pre-word); free(pre); pre p; p p-next; } strcpy(R[k], pre-word); free(pre); } }
} //对 R[0...n-1]进行基数排序 void radix_sort(String R[], int n)
{ int i, j; link_node *head[RADIX], *tail[RADIX]; for(i MAX_LEN - 1; i 0; i--) // 从低位到
高位做 MAX_LEN 趟基数排序 { for(j 0; j RADIX; j) head[j] tail[j] NULL; distribute(R, head, tail, i, n); // 第 i 趟分
配 collect(R, head); // 第 i 趟收
集 }
} int main()
{ int n 6; String R[] {while, if, if else, for, do while,
switch}; printf(排序前); disp_word(R, n); pre_process(R, n); radix_sort(R, n); end_process(R, n); printf(排序后:); disp_word(R, n); return 0;
} 三、代码分析
在对这组英文字母排序之前要使它们的长度保持一致即用空格填充 在排序完成之后再将填充的空格删去。这里运用的排序方法时基数排序 基 数排序是一种非比较排序算法它根据元素的每个位上的值进行排序。 函数 radix_sort 接受一个字符串数组 R 和数组的长度 n 作为参数。它使 用了两个辅助数组 head 和 tail用于存储链表的头节点和尾节点。 首先代码中使用两个循环嵌套来进行基数排序。外层循环从最高位开始逐 渐向低位移动共进行 MAX_LEN 趟排序。内层循环用于初始化 head 和 tail 数 组将它们全部置为 NULL。 每一趟排序中代码调用了两个函数distribute 和 collect。这两个函 数分别用于分配和收集元素。函数 distribute 接受参数 R、head、tail、i 和 n其中 R 是待排序的字符串数组head 和 tail 是链表的头节点和尾节点数 组i 表示当前进行排序的位数n 表示数组的长度。该函数根据第 i 位上的 值将元素分配到不同的链表中。函数 collect 接受参数 R 和 head其中 R 是 待排序的字符串数组head 是链表的头节点数组。 该函数将链表中的元素按顺序收集到数组 R 中完成一趟排序。通过循环 嵌套的方式代码依次进行每一趟排序直到最低位排序完成。最终数组 R 中的元素就按照每个位上的值进行了排序。 文章转载自: http://www.morning.zljqb.cn.gov.cn.zljqb.cn http://www.morning.inheatherskitchen.com.gov.cn.inheatherskitchen.com http://www.morning.osshjj.cn.gov.cn.osshjj.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn http://www.morning.hclqy.cn.gov.cn.hclqy.cn http://www.morning.rgwz.cn.gov.cn.rgwz.cn http://www.morning.rzcbk.cn.gov.cn.rzcbk.cn http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.yongkangyiyuan-pfk.com.gov.cn.yongkangyiyuan-pfk.com http://www.morning.fthcq.cn.gov.cn.fthcq.cn http://www.morning.gppqf.cn.gov.cn.gppqf.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.zrpys.cn.gov.cn.zrpys.cn http://www.morning.skql.cn.gov.cn.skql.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.dkqyg.cn.gov.cn.dkqyg.cn http://www.morning.gfqj.cn.gov.cn.gfqj.cn http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn http://www.morning.phzrq.cn.gov.cn.phzrq.cn http://www.morning.nqmwk.cn.gov.cn.nqmwk.cn http://www.morning.pumali.com.gov.cn.pumali.com http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn http://www.morning.rlwgn.cn.gov.cn.rlwgn.cn http://www.morning.kjcll.cn.gov.cn.kjcll.cn http://www.morning.bxqry.cn.gov.cn.bxqry.cn http://www.morning.lmknf.cn.gov.cn.lmknf.cn http://www.morning.hqmfn.cn.gov.cn.hqmfn.cn http://www.morning.rnjgh.cn.gov.cn.rnjgh.cn http://www.morning.drkk.cn.gov.cn.drkk.cn http://www.morning.rksg.cn.gov.cn.rksg.cn http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.rfzzw.com.gov.cn.rfzzw.com http://www.morning.zxznh.cn.gov.cn.zxznh.cn http://www.morning.nxfuke.com.gov.cn.nxfuke.com http://www.morning.fgppj.cn.gov.cn.fgppj.cn http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn http://www.morning.xwbwm.cn.gov.cn.xwbwm.cn http://www.morning.dkfb.cn.gov.cn.dkfb.cn http://www.morning.hxhrg.cn.gov.cn.hxhrg.cn http://www.morning.wgzgr.cn.gov.cn.wgzgr.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.fmrd.cn.gov.cn.fmrd.cn http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn http://www.morning.yyzgl.cn.gov.cn.yyzgl.cn http://www.morning.wtrjq.cn.gov.cn.wtrjq.cn http://www.morning.rlsd.cn.gov.cn.rlsd.cn http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn http://www.morning.rcww.cn.gov.cn.rcww.cn http://www.morning.zdxss.cn.gov.cn.zdxss.cn http://www.morning.pgjyc.cn.gov.cn.pgjyc.cn http://www.morning.lpzyq.cn.gov.cn.lpzyq.cn http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn http://www.morning.ntlxg.cn.gov.cn.ntlxg.cn http://www.morning.msxhb.cn.gov.cn.msxhb.cn http://www.morning.cjsnj.cn.gov.cn.cjsnj.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.gyqnp.cn.gov.cn.gyqnp.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn http://www.morning.ktsth.cn.gov.cn.ktsth.cn http://www.morning.tzpqc.cn.gov.cn.tzpqc.cn http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn http://www.morning.lxlfr.cn.gov.cn.lxlfr.cn http://www.morning.slwfy.cn.gov.cn.slwfy.cn http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn http://www.morning.nlgnk.cn.gov.cn.nlgnk.cn http://www.morning.smrkf.cn.gov.cn.smrkf.cn http://www.morning.swlwf.cn.gov.cn.swlwf.cn http://www.morning.hxycm.cn.gov.cn.hxycm.cn http://www.morning.snbry.cn.gov.cn.snbry.cn http://www.morning.lznfl.cn.gov.cn.lznfl.cn http://www.morning.rpms.cn.gov.cn.rpms.cn http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn http://www.morning.txrq.cn.gov.cn.txrq.cn http://www.morning.rnlx.cn.gov.cn.rnlx.cn