上次看了个关于排序(按abcdef顺序排序)的帖子,里面有个回帖的写了如下代码:public class Test{
        public static void main(String args[]){
        String s="SDsBAEa";
        Test test=new Test();
        s=test.sort(s);
        System.out.println(s);
    }
    public String sort(String param){
        char c[]=param.toCharArray();
        char min;
        String s1;
        String s2;
        for(int i=0;i<c.length;i++){
            min=c[i];
            s1=min+"";
            for(int j=i+1;j<c.length;j++){
                s2=c[j]+"";
                if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
                    min=c[j];
                    c[j]=c[i];
                    c[i]=min;
                    s1=min+"";
                }
            }
        }
        
        return new String(c);
    }
}我看不懂怎么循环来判断顺序...麻烦给看看,详细的说明下哈,分立即奉上!!!!

解决方案 »

  1.   

    for(int i=0;i<c.length;i++){
                min=c[i];
                s1=min+"";
                //每次把第 i 个和 i+1 后面的都比较一次并把最终结果放在 i的位置上            for(int j=i+1;j<c.length;j++){
                    s2=c[j]+"";
                            //不区分大小写的 ascii 码比较。                if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
                        min=c[j];
                        c[j]=c[i];
                        c[i]=min;
                        s1=min+"";
                    }
                }
            }
      

  2.   


    package zhao;
    public class Test{
        public static void main(String args[]){
        String s="SDsBAEa";
        Test test=new Test();
        s=test.sort(s);
        System.out.println(s);
    }
    public String sort(String param){
        char c[]=param.toCharArray();
        
        char min;
        String s1;
        String s2;
        for(int i=0;i<c.length;i++){
            min=c[i];//取出第i个字符
            s1=min+"";//转化为String类型
            //跟index比i大的index所在的元素跟c[i]比较,要循环
            for(int j=i+1;j<c.length;j++){
                s2=c[j]+"";//取出index比i大的元素的值,并且把他转为String类型
                // 或者s1和s2是完全不同的字符,可以是大小写不同,或者同一个字符,但大小写不一样的时候,执行if块的代码
                if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
                    min=c[j];//把[j]元素和[i]元素互换!下面3行代码就是
                    c[j]=c[i];
                    c[i]=min;
                    s1=min+"";
                }
            }
        }
        
        return new String(c);
    }
    }
      

  3.   

    看了上面的 还是没理解....
    for(int j=i+1;j<c.length;j++){
                    s2=c[j]+"";
                    if(s1.compareToIgnoreCase(s2)>0 || (s1.compareToIgnoreCase(s2)==0 && s1.compareTo(s2)>0)){
                        min=c[j];
                        c[j]=c[i];
                        c[i]=min;
                        s1=min+"";
                    }
    能不能将具体点呢..
      

  4.   

    这是选择法,把最小放0,第二小放1
    这程序就多加了个if条件。
    if的条件里按 ||(或) 分两半看.
      

  5.   

    给你个网址,比较形象的排序方法解释,有图。
    http://myweb.yzu.edu.cn/toby88/c/cstudy/chengxu/Dxuanmai.htm
      

  6.   

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.List;public class csdntest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    List list = new ArrayList();
    list.add("a");list.add("b");
    list.add("d");list.add("e");
    list.add("c");list.add("f");
    Collections.sort(list,new Comparatorsort());
    if(list != null && list.size() > 0){
    Iterator it = list.iterator();
    while(it.hasNext()){
    String str = (String)it.next();
    System.out.print(str + " ");
    }
    }
    }}
    class Comparatorsort implements Comparator{
     public int compare(Object o1,Object o2)
        {
            String str1=(String)o1;
            String str2=(String)o2;
            if(str1.compareTo(str2)>0) 
              return 1;
            if(str1.compareTo(str2)<0) 
              return -1;
            return 0;
        }
    }