欢迎来到天天文库
浏览记录
ID:58509432
大小:12.50 KB
页数:2页
时间:2020-09-03
《排字典顺序排序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、输入下述8个国家名字的字符串:CHINA、JAPAN、KOREA、INDIA、CANADA、AMERICAN、ENGLAND和FRANCE,将这些国名按字典顺序排序。#include#includevoidmain(){charstr[8][9]={"CHINA","JAPAN","KOREA","INDIA","CANADA","AMERICAN","ENGLAND","FRANCE"};chartemp[9];inti,l;for(i=0;i<8;i++){for(l=0;l<9;
2、l++){printf("%c",str[i][l]);}printf("");}//排序printf("以上8个国家按字典中排序如下所示:");intj,k;for(j=0;j<8;j++)for(k=j+1;k<8;k++){if(strcmp(str[j],str[k])>0){//交换strcpy(temp,str[j]);strcpy(str[j],str[k]);strcpy(str[k],temp);}}for(i=0;i<8;i++)//输出printf("%s",str[i]);} 1.字典序
3、法 字典序法中,对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是54321。 字典序算法如下: 设P是1~n的一个全排列:p=p1p2......pn=p1p2......pj-1pjpj+1......pk-1pkpk+1......pn 1)从排列的右端开始,找出第一个比右边数字小的数字的序号j(j从左端
4、开始计算),即j=max{i
5、pi6、pi>pj}(右边的数从右至左是递增的,因此k是所有大于pj的数字中序号最大者) 3)对换pi,pk 4)再将pj+1......pk-1pkpk+1pn倒转得到排列p’’=p1p2.....pj-1pjpn.....pk+1pkpk-1.....pj+1,这就是排列p的下一个下一个排列。 例如是数字1~9的一个排列。从它生成下一个排列的步骤如下: 自右至左找出排列中第一个比右边数字小7、的数字4 在该数字后的数字中找出比4大的数中最小的一个5 将5与4交换 将7421倒转 所以的下一个排列是。
6、pi>pj}(右边的数从右至左是递增的,因此k是所有大于pj的数字中序号最大者) 3)对换pi,pk 4)再将pj+1......pk-1pkpk+1pn倒转得到排列p’’=p1p2.....pj-1pjpn.....pk+1pkpk-1.....pj+1,这就是排列p的下一个下一个排列。 例如是数字1~9的一个排列。从它生成下一个排列的步骤如下: 自右至左找出排列中第一个比右边数字小
7、的数字4 在该数字后的数字中找出比4大的数中最小的一个5 将5与4交换 将7421倒转 所以的下一个排列是。
此文档下载收益归作者所有