使用选择排序alg排序字符串

时间:2012-12-14 00:17:02

标签: java string sorting

我知道有一种简单的方法可以做到这一点......说的是,我正在尝试使用选择排序和stringBuilder类对字符串进行排序,但是我得到了一个无限循环。如果有人可以帮忙,谢谢。 包第9章; import java.util。*;

public class SortedString {

    public static void main(String[] args) {
        String input = "cabed";

        System.out.println(sort(input));
    }

    public static String sort(String str) {     
        StringBuilder sb = new StringBuilder(str);

        for(int i=0; i<sb.length()-1; i++) {
            char tmp;
            for(int j=i+1; j<sb.length(); j++) {
                if(sb.charAt(j) < sb.charAt(i)) {
                    tmp = sb.charAt(i);
                    sb.insert(i, sb.charAt(j));
                    sb.insert(j,  tmp);
                }
            }
        }
        return sb.toString();       

    }

}

1 个答案:

答案 0 :(得分:3)

每次交换时,实际上都会增加字符串的长度。

            if(sb.charAt(j) < sb.charAt(i)) {
                tmp = sb.charAt(i);
                sb.insert(i, sb.charAt(j));
                sb.insert(j,  tmp);
            }

插入会在指定位置腾出空间,而不是替换那里的字符。例如,如果您从acbd开始,在您点击该部分代码后,您将被abccbd而不是abcd

我认为你要找的是setCharAt方法。