[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;
}
by: 发表于:2017-12-13 10:31:43 顶(0) | 踩(0) 回复
??
回复评论