1
我知道有一个简单的方法做到这一点...说,我试图使用选择排序和stringBuilder类的字符串进行排序,但我得到一个无限循环。如果有人可以帮助,赞赏。 包第9Str; import java.util。*;使用选择排序字符串排序alg
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();
}
}
你每次在循环中都插入两个字符 - 我怀疑这是你的意图。难道你不应该删除两个或更换它们吗? – OldCurmudgeon
顺便说一句 - 这不是[选择排序](http://en.wikipedia.org/wiki/Selection_sort)这是[冒泡排序](http://en.wikipedia.org/wiki/Bubble_sort) – OldCurmudgeon
@OldCurmudgeon否它不是。交换命中的次数比它需要的次数多(最低值只能在tmp中跟踪,然后在内部回路末尾交换),但通过内部回路,我是静态的,并且在每次迭代结束时外部循环,确切地说,一个更多的值保证按顺序排列,从最小到最大。 – femtoRgon