[C++] 基数排序 →→→→→进入此内容的聊天室

来自 , 2019-12-14, 写在 C++, 查看 147 次.
URL http://www.code666.cn/view/65d2ea03
  1. //按照字典排序10个5字母的单词——
  2. //基数排序——自右向左依次执行最稳定的排序算法
  3. #include "iostream"
  4. #include "string"
  5. using namespace std;
  6. #define  n 5 //每个单词的数目是5
  7. #define  count 10 //输入10个单词
  8. int main()
  9. {
  10.         int i=0,j=0,k=0,d=0,m=0;//k:当前字母在26字母中的位置
  11.         //存放单词
  12.         string  c[count]={"apple","fears","bvdsa","bgisy",
  13.                 "trfbh","kansh","nvfbs","rtbvr","wrcas","ngfba"};
  14.         string str[26][count];//用来存放基数排序的桶
  15.     for (j=4;j>=0;j--)//根据基数排序法,对单词各位(0—n-1)进行排序,从右到作,j=4
  16.     {
  17.         for (i=0;i<count;i++)//对count个单词进行J位进排序桶
  18.             {
  19.                 k=c[i][j]-97;//存放的位置
  20.  
  21.                     str[k][m++]=c[i];//第k行第m列
  22.             }
  23.                 for(i=0,k=0;i<count&&k<26;k++){//按顺序回收排序桶
  24.                         for(d=0;d<count;d++){
  25.                                 //第k行第d列的第j个字母
  26.                                 if (str[k][d][j]>96&&str[k][d][j]<123||str[k][d][j]>64&&str[k][d][j]<91)
  27.                           //判断26个排序桶是否有单词
  28.                           //ASCII码:A--65;Z--90;a--97;z--122
  29.                                 {
  30.                                         c[i]=str[k][d];//将第K行第d列的元素赋值给c[i]
  31.                                         i++;
  32.                                         str[k][d]=-1;//标记为已找过
  33.                                 }
  34.                                 m=0;
  35.                         }
  36.                 }
  37.         }
  38.     for (i=0;i<count;i++)//输出结果
  39.         {
  40.                
  41.                 cout<<c[i]<<endl;
  42.         }
  43.         return 0;
  44. }

回复 "基数排序"

这儿你可以回复上面这条便签

captcha