排序一个数组 [F,a,f,h,A,g,K],要求输出[A,a,F,f,g,h,K]
这种排序是怎么写的??

解决方案 »

  1.   

    我记得应该是这样的:
    A的ASCII为65 a的ASCII为97 那把a - 31.5 就为65.5。然后按double型排序 然后转回原来的字母,就OK了。
      

  2.   

    For example:[F,a,f,h,A,g,K], I will delete all the capital letters, and sort all the lowercases. Then if there is a capital letter 'A' in the original array, I know it must be placed at the front of 'a'. So does the capital letter 'F'.
      

  3.   

    丢进集合里面。 写一个比较器去排序。
    比较器
    public static class CaseInsensitiveComparator 
    implements Comparator { 
    public int compare(Object element1, 
    Object element2) { 
    String lower1 = 
    element1.toString().toLowerCase(); 
    String lower2 = 
    element2.toString().toLowerCase(); 
    if(lower1.equals(lower2)){  //如果是同个字母大小写  如 A a
     return  element1.compareTo(element2); //直接比较原字母
    }else{
     return lower1.compareTo(lower2);  //否则比较转小写的字母
    }

      

  4.   

    取得ASCII码,然后在排序。虽然笨,但很实用。
      

  5.   


    Character[] cs = { 'F', 'a', 'f', 'h', 'A', 'g', 'K' };
    Comparator<Character> c = new Comparator<Character>() {
    public int compare(Character o1, Character o2) {
    int dif = 'a' - 'A';
    if (o1 - o2 == dif || o2 - o1 == dif) {
    return o1 - o2;
    } else {
    return (o1 >= 97 ? (o1 - dif) : o1) - (o2 >= 97 ? (o2 - dif) : o2);
    }
    } };
    Arrays.sort(cs, c); System.out.println(cs);
      

  6.   

    详见:
    http://topic.csdn.net/u/20080921/10/6987335e-9cb3-4557-9f9e-c294a1b86dd3.htmlN人回复,我也写了个:
    public class Test01 { public static void main(String[] args) {
     char ch[] = {'j','K','a','A','f','F'};
     System.out.println("before sorting, array=" + Arrays.toString(ch));
     for (int i = 0; i < ch.length; i++) {
     for (int j = 0; j < ch.length-1; j++) {
     if (lt(ch[i], ch[j])) {
     char t = ch[i];
     ch[i]=ch[j];
     ch[j]=t;
     }
     }
     }
     System.out.println("after sorting, array=" + Arrays.toString(ch));
     }
     private static boolean lt(char c, char d) {
     if (c == d - 'A' + 'a') {
      return false; 
     }
     if (c - 'A' + 'a' == d) {
     return true;
     }
     return Character.toLowerCase(c) - Character.toLowerCase(d) < 0;
     }
     }