주어진 문자열의 순열을 인쇄하는 데 다음 코드가 있습니다. 이 코드의 실행 시간을 알아 내려고 노력하고 있어요문자열 순열을 인쇄하는 알고리즘 - 실행 시간 분석
public static int count = 0;
public static void permute(String soFar, String strLeft) {
if(strLeft.length() == 1) {
soFar += strLeft;
System.out.println(++count + " :: " + soFar);
}
for(int i=0; i<strLeft.length(); i++) {
permute(soFar + strLeft.charAt(i), strLeft.substring(0,i) + strLeft.substring(i+1));
}
}
/**
* @param args
*/
public static void main(String[] args) {
String input = "abcd";
permute("",input);
}
[편의상 아니라 내가 노력하고 무엇에 초점을 풀어 문자열의 문자가 중복되지한다고 가정 할 수 있습니다].
지금까지의 생각을 내 체인 : 재발을 쓰려고 ,
T(n) = n * T(n-1) + O(n) for n > 1
= 1 for n = 1
는 N있다! 순열 (recutive calls)의 수는 n보다 큽니다. 사실 입력 문자열이 "abcd"인 경우 (예 : 4 자), permute 함수 호출 수는 65입니다.
이 코드의 실행 시간을 찾는 방법에 대한 지침은 무엇입니까?
더 큰 것은 무엇입니까? 메서드 호출 횟수 또는 런타임 중에 출력되는 숫자의 양은 어느 정도입니까? – Makoto
중복/비슷한 질문이 있으십니까? http://stackoverflow.com/questions/11425344/what-is-the-complexity-big-o-of-this-algorithm – apnorton
@anorton - 네, 복제본처럼 보입니다. 감사! 나는 다른 스레드에서 대답을 통해 갈 것이며 이것을 닫은 것으로 표시 할 것이다. –