用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

基数排序

2017-12-07 作者:柯侧耳倾听者举报

[c++]代码库

//按照字典排序10个5字母的单词——
//基数排序——自右向左依次执行最稳定的排序算法
#include "iostream"
#include "string"
using namespace std;
#define  n 5 //每个单词的数目是5
#define  count 10 //输入10个单词
int main()
{
	int i=0,j=0,k=0,d=0,m=0;//k:当前字母在26字母中的位置
	//存放单词
	string  c[count]={"apple","fears","bvdsa","bgisy",
		"trfbh","kansh","nvfbs","rtbvr","wrcas","ngfba"};
	string str[26][count];//用来存放基数排序的桶
    for (j=4;j>=0;j--)//根据基数排序法,对单词各位(0—n-1)进行排序,从右到作,j=4
    {
    	for (i=0;i<count;i++)//对count个单词进行J位进排序桶
	    {
	    	k=c[i][j]-97;//存放的位置

		    str[k][m++]=c[i];//第k行第m列
	    }
		for(i=0,k=0;i<count&&k<26;k++){//按顺序回收排序桶
			for(d=0;d<count;d++){
				//第k行第d列的第j个字母
				if (str[k][d][j]>96&&str[k][d][j]<123||str[k][d][j]>64&&str[k][d][j]<91)
			  //判断26个排序桶是否有单词
			  //ASCII码:A--65;Z--90;a--97;z--122
				{
					c[i]=str[k][d];//将第K行第d列的元素赋值给c[i]
					i++;
					str[k][d]=-1;//标记为已找过
				}
				m=0;
			}
		}
	}
    for (i=0;i<count;i++)//输出结果
	{
		
		cout<<c[i]<<endl;
	}
	return 0;
}


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。