【发布时间】:2012-12-14 00:17:01
【问题描述】:
我知道有一种简单的方法可以做到这一点...话虽如此,我正在尝试使用选择排序和 stringBuilder 类对字符串进行排序,但我得到了一个无限循环。如果有人可以提供帮助,不胜感激。 包 Chapter9Str; 导入 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();
}
}
【问题讨论】:
-
您每次在循环中都在字符串中插入两个字符 - 我怀疑这就是您的意图。您不应该同时删除两个或替换它们吗?
-
顺便说一句-这不是selection sort这是bubble sort
-
@OldCurmudgeon 不,不是。交换比它需要的更频繁(最低值可以在 tmp 中跟踪,然后在内部循环结束时交换),但是通过内部循环,i 是静态的,并且在每次迭代结束时外循环,保证再多一个值是有序的,从最小到最大。
-
@femtoRgon - 我显然不值得。 :) 对我来说,这看起来像是 BS。