나는 이것을 수행하는 쉬운 방법이 있다는 것을 알고있다. 즉, 선택 정렬 및 stringBuilder 클래스를 사용하여 문자열을 정렬하려고하는데, 무한 루프가 발생한다. 누군가가 도울 수 있다면, 감사하겠습니다. 패키지 Chapter9Str; 가져 오기 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
BTW - 이것은 [선택 정렬]이 아닙니다. (http://en.wikipedia.org/wiki/Selection_sort) 이것은 [버블 정렬]입니다. (http://en.wikipedia.org/wiki/Bubble_sort) – OldCurmudgeon
@OldCurmudgeon No 그렇지 않습니다. 스왑은 필요할 때보 다 자주 칠합니다 (가장 낮은 값은 tmp로 추적 한 다음 내부 루프의 끝에서 바꿀 수 있음). 내부 루프를 통해 정적이고 각 반복의 끝에서 바깥 쪽 루프는 정확히 하나 이상의 값이 가장 작은 것부터 가장 큰 것까지 순서대로 보장됩니다. – femtoRgon