现有一数组[a,b,B,d,D,K,j,n,N,s];
现求输出结果为[a,B,b,D,d,j,K,N,n,s]排序方法。
谢谢!

解决方案 »

  1.   

     String[] strArray = new String[] {"z", "a", "C"};
     Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
        // [a, C, z]
      

  2.   

    把大写的和小写的分别排序,然后再把大写转换成小写看应插入什么地方(用ASCII码判断),将大写插入,如果转换后有相同的则放在相同的小写后面。
      

  3.   

    ...小写字母编码2*(ch-'a'),大写字母2*(ch-'A')-1
    然后排序。。
      

  4.   

    不好意思,是我表述不清楚,意思是:
    按照字母顺序排列,并且若同时存在大写字母和小写字母,则大写在前,小写在后。
    我测试过Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
    无法保证大写在前,小写在后。
    求解中....谢谢!!!
      

  5.   

    package com.iwode.jason;import java.util.Arrays;
    import java.util.Comparator;/**
     * 
     * @author Jason
     * @version 创建时间:2008-11-7 上午08:54:52
     * @contact mailto:[email protected]
     * 
     */
    public class Test {    /**
         * @param args
         */
        public static void main(String[] args) {
    // TODO Auto-generated method stub
    String[] str = {"a","b","B","d","D","K","j","n","N","s"};
    Arrays.sort(str, 0, str.length-1, new Comparator<String>(){     @Override
        public int compare(String str1, String str2) {
    // TODO Auto-generated method stub
    String r1 = str1.toUpperCase();
    String r2 = str2.toUpperCase();
    if(r1.compareTo(r2)==0){
        return str1.compareTo(str2);
    }else{
        return r1.compareTo(r2);
    }
        }});
    for(String item:str){
        System.out.print(item+" ");
    }
        }}
      

  6.   


    用最原始的双循环排序法
    public static void main(String[] args) {
    char[] ch = {'a','b','B','d','D','K','j','n','N','s'}; 

    for(int i=0;i<ch.length;i++){
      for(int j=i+1;j<ch.length;j++){
        char temp1=ch[i];
        char temp2=ch[j];
        
        if(temp1<97) temp1+=32;
        if(temp2<97) temp2+=32;
        
        if(temp1>temp2){
          char t=ch[j];
          ch[j]=ch[i];
          ch[i]=t;
          
        }else if(temp1==temp2&&ch[i]>ch[j]){
        char t=ch[j];
    ch[j]=ch[i];
    ch[i]=t;
        }
      }
    }
    System.out.println(new String(ch));
    }
    肯定都会,就是都不想用这么原始的方法吧
      

  7.   


    import java.util.Arrays;
    import java.util.Comparator;public class CharArraySort { public static void main(String[] args) {
    String[] str = {"a","b","B","d","D","K","j","n","N","s"};  
    Arrays.sort(str,0,str.length,new Comparator<String>()
    {
    public int compare(String str1, String str2) {
    String temp1=str1.toLowerCase();
    String temp2=str2.toLowerCase();
    if(!temp1.equals(temp2))
    return temp1.compareTo(temp2);
    else
    return str1.compareTo(str2);
    }
    });
    for(int i=0;i<str.length;i++)
    System.out.print(str[i]+" ");
    }
    }输出:a B b D d j K N n s
      

  8.   

    多谢各位赐教!以下我写了一个程序与各位共勉:String[] strArray = new String[] { "z", "D", "c", "M", "h", "a", "B",
    "A", "b", "d", "H", "m", "E" };
    // 先按照顺序排列;
    Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
    //System.out.println("排序后:");
    //for (int k = 0; k < strArray.length; k++) {
    // System.out.print(strArray[k] + "  ");
    //}
    //System.out.println();
    // 若存在大写字母,则交换;
    for (int i = 0; i < strArray.length; i++) {
    if ((i != strArray.length - 1)
    && (strArray[i].toCharArray()[0] == strArray[i + 1]
    .toCharArray()[0] + 32)) {
    String str = "";
    str = strArray[i];
    strArray[i] = strArray[i + 1];
    strArray[i + 1] = str;
    }
    }
    System.out.println();
    System.out.println("最后排序为:");
    for (int k = 0; k < strArray.length; k++) {
    System.out.print(strArray[k] + "  ");
    }
      

  9.   

    import java.util.Arrays;
    import java.util.Comparator;public class CharArraySort {    public static void main(String[] args) {
            String[] str = {"a","b","B","d","D","K","j","n","N","s"};  
            Arrays.sort(str,0,str.length,new Comparator<String>()
            {
                public int compare(String str1, String str2) {
                    String temp1=str1.toLowerCase();
                    String temp2=str2.toLowerCase();
                    if(!temp1.equals(temp2))
                        return temp1.compareTo(temp2);
                    else
                        return str1.compareTo(str2);
                }
            });
            for(int i=0;i<str.length;i++)
                System.out.print(str[i]+" ");
        }
    }
    正确输出
      

  10.   


    import java.util.Arrays;
    import java.util.Comparator;public class CharArraySort {    public static void main(String[] args) {
            String[] str = {"a","b","B","d","D","K","j","n","N","s"};  
            Arrays.sort(str,0,str.length,new Comparator<String>()
            {
                public int compare(String str1, String str2) {
                    String temp1=str1.toLowerCase();
                    String temp2=str2.toLowerCase();
                    if(!temp1.equals(temp2))
                        return temp1.compareTo(temp2);
                    else
                        return str1.compareTo(str2);
                }
            });
            for(int i=0;i<str.length;i++)
                System.out.print(str[i]+" ");
        }
    }
      

  11.   

    import java.util.Arrays; 
    import java.util.Comparator; /** 

    * @author Jason 
    * @version 创建时间:2008-11-7 上午08:54:52 
    * @contact mailto:[email protected] 

    */ 
    public class Test {     /** 
        * @param args 
        */ 
        public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    String[] str = {"a","b","B","d","D","K","j","n","N","s"}; 
    Arrays.sort(str, 0, str.length-1, new Comparator <String>(){     @Override 
        public int compare(String str1, String str2) { 
    // TODO Auto-generated method stub 
    String r1 = str1.toUpperCase(); 
    String r2 = str2.toUpperCase(); 
    if(r1.compareTo(r2)==0){ 
        return str1.compareTo(str2); 
    }else{ 
        return r1.compareTo(r2); 

        }}); 
    for(String item:str){ 
        System.out.print(item+" "); 

        } }