導入Java . util . iterator;
公共類比較{
Public void計數排序(string【】a,char【】b,int k){//計數排序。
String【】temp =新字符串【a . length+1】;
int【】c = new int【k+1】;
int i,j;
for(I = 0;我& lt= k;i++)
c【I】= 0;
for(j = 0;j & lt長度;j++) {
c【B【j】-a‘】= c【B【j】-a‘】+1;
}
for(I = 1;我& lt= k;i++)
c【I】= c【I】+c【I-1】;
for(j = a . length-1;j & gt= 0;j-){
temp【c【B【j】-【A‘】= A【j】;
c【B【j】-【a‘】= c【B【j】-【a‘】-1;
}
for(I = 1;我& lt= A .長度;i++) {
a【I-1】= temp【I】;
}
}
public void radix sort(String【】A,int d ){
ArrayList【】arr = new ArrayList【26】;
counting sort(A,divide(A,d),max(divide(A,d))-‘A‘);
for(int I = 0;我& lta .長度;i++) {
int temp = A【I】。charAt(d-1)-“a”;
if(arr【temp】= = null)
arr【temp】= new ArrayList();
arr【temp】add(A【I】);
}
for(int j = 0;j & lt26;j++){//插入並排序每個存儲桶。
if(arr【j】!= null) {
insert(arr【j】);
}
}
//合並每個桶的結果。
int count = 0;
for(int I = 0;我& lt26;i++) {
if(arr【I】!= null) {
叠代器it = arr【I】。叠代器();
while(it . hasnext()){
String temp =(String)it . next();
a【count】= temp;
count++;
}
}
}
}
public void Insert(ArrayList list){//插入排序。
if(list . size()& gt;1) {
for(int I = 1;我& ltlist . size();i++) {
if(compare to((String)list . get(I),(String)list . get(I-1))& lt;0) {
String temp =(String)list . get(I);
int j = I-1;
for(;j & gt= 0 & amp& ampcompare to(temp,(String)list . get(j))& lt;0;j -)
list . set(j+1,list . get(j));
list . set(j+1,temp);
}
}
}
}
int compare to(string a,string b){//比較兩個字符串的大小。
返回a . compare to(b);
}
public char【】divide(string【】a,int count){//取數組中每個字符串的d字符。
char【】B =新字符【a . length】;
for(int I = 0;我& lta .長度;i++) {
b【I】= A【I】。charAt(計數-1);
}
返回B;
}
public char max(char【】B){//查找數組中的最大值。
char max =‘a‘;
for(int I = 0;我& lt長度;i++) {
if(B【I】》;max)max = B【I】;
}
return max
}
公共靜態void main(String[] args) {
CompareString cs = new CompareString();
string【】A = {“蘋果“、“妳好“、“親愛的“、“清清“、“日日“、“開心“};
cs . radix sort(A,1);
for(int I = 0;我& lta .長度;i++)
system . out . print(A【I】+““);
}
}