将01 03 01001 04 03001 03002 02 04001 04002 02001 排序成01 01001 02 02001 03 03001 03002 04 04001 04002
public static void main(String[] args) {
String[] arr = {"01", "03", "01001", "04", "03001", "03002", "02", "04001", "04002", "02001"};
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (compare(arr[j], arr[j+1]) > 0) {
String temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
private static int compare(String s1, String s2) {
int len1 = s1.length();
int len2 = s2.length();
int minLen = Math.min(len1, len2);
for (int i = 0; i < minLen; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
if (i == 0) {
return c1 - c2;
} else if (i == 2 || i == 4) {
return s1.substring(0, i).compareTo(s2.substring(0, i));
} else {
return c1 - c2;
}
}
}
return len1 - len2;
}
输出结果:
请采纳,谢谢
按 ascii 码直接排序不就是了?