该程序#include <iostream> #include <string> using namespace std; char *a[20] = {"now","for","tip","ilk","dim","tag","jot","sob","nob", "sky","hut","ace","bet","men","egg","few","jay","owl","joy","rap"}; #define d(x,y) (x*y) #define dia(a,b) (a[b]-'a') #define bin(a) (l+cnt[a]) char *aux[256]; void MSDSort_A(char *a[],int l,int r,int w,int cl) { int i, cnt[27] = {0}; if( (l >= r) || (w > cl)) return; for(i = l; i <= r; i++) cnt[dia(a[i],w)+1]++; for(i = 1; i <= 26; i++) cnt[i]+= cnt[i-1]; for(i = l; i <= r;i++) aux[l+cnt[dia(a[i],w)]++] = a[i]; for(i = l; i <= r; i++) a[i] = aux[i]; MSDSort_A(a,l,bin(0)-1,w+1,cl); for(i = 0; i < 25; i++) MSDSort_A(a,bin(i),bin(i+1)-1,w+1,cl); } int main() { //MSDSort_A( a, 0 ,20-1 , 0 , 3 ); MSDSort_A(a,0,19,0,3); for(int i = 0; i < 20; i++) cout<<*(a+i)<<endl; cout<<endl; system("pause"); } 摘自其他文章,忘记出处。。