请问这个排序算法怎么写?

来源:百度知道 编辑:UC知道 时间:2024/09/23 18:25:48
英文单词排序,按字母顺序排,比如:'a','B','C','b','d',排完后就是a, B, b, C, d. ,但是遇到相同字母就按ASCII排,比如B排前,b排后,
例如给ABC, abc, Abc, Bbc, bBc 排序,
排序后顺序是ABC, Abc, abc, Bbc, bBc
比较两个数排序
谁能帮我写个方法?
我要返回的是int,不是boolean
------------------------------------------------
为什么我用
String[] strs = {"Party Name", "Party","AB","ABC","ab","cd"};
来测试的时候,会抛出StringIndexOutOfBoundsException,
因为比较要考虑到两种情况,Party比Party Name应在前面,
AB比ABC应在前面

源代码:
public class Test1 {
//按照规则比较字符串,1表示str1>str2,0表示str1<str2
private static int compareString(String str1, String str2) {
//默认当字符串相等时前者较小
if(str1 == str2) {
return 0;
}
if(str1 == null || str1.equals("")) {
return 0;
}
if (str2 == null || str2.equals("")) {
return 1;
} //取出字符串首字母
char c1 = str1.charAt(0);
char c2 = str2.charAt(0);
//当首字符相等时,递归比较下一字母
if(c1 == c2) {
return compareString(str1.substring(1), str2.substring(1));
} else if(Character.isLowerCase(c1)) {
if(Character.isLowerCase(c2)) {
return c1<c2 ? 0: 1;
} else {
return Character.toUpperCase(c1)<c2 ? 0: 1;
}
} else {
if(Character.isUpperCase(c2)) {
return c1<c2 ? 0: 1;
} else {
return c1<=Character.toUpperCase(c2) ? 0: 1;
}
}
}
//字符串数组排序