开始之前
假设最长字符串的长度是L,以L作为输入的长度,然后假定所有的字符串都”补齐”到此长度,这个补齐只是逻辑上的,我们可以假想有一种”空字符”,它小于任何其它字符,用此字符补齐所有长度不足的字符串。例如:最长的字符串长度为9,有一个字符串A长度为6,那么当比较第7位字符的时候,我们让A[7]为”空字符”。
如果要包含所有的字符似乎并不容易,我们先定义一个字符集,待排序字符串中的所有字符都包含在这个字符集里
//字符集 privatestring_myCharSet="0123456789qwertyuiopasdfghjklzxcvbnm";
再来一个生成随机字符串的方法(C#实现):
privateRandom_random=newRandom(); string[]GetRandStrings(intsize,intminLength,intmaxLength) { string[]strs=newstring[size]; intlen=0; StringBuildersb=newStringBuilder(maxLength); for(inti=0;i<strs.Length;i++) { //先随机确定一个长度 len=_random.Next(minLength,maxLength); for(intj=0;j<len;j++) { //随机选取一个字符 sb.Append(_myCharSet[_random.Next(_myCharSet.Length)]); } strs[i]=sb.ToString(); sb.Clear(); } returnstrs; }
这里按照字符的整数表示来确定桶的范围,再为”空字符”准备一个桶。为了表示”空字符”这个特例,这里用default(char),即’