我有下面的代碼來打印指定字符串的排列。 [爲了簡化和不丟失專注於什麼,我想,讓我們假設有沒有字符串中的字符複製]算法打印字符串的排列 - 運行時間分析
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個!排列,但遞歸調用的次數大於n !.實際上,對於輸入字符串爲「abcd」的例子,即4個字符,排列函數的調用次數爲65.
任何關於如何查找此代碼的運行時間的指針?
什麼是更大 - 電話給該方法的數字或數字的,它將其運行時的輸出量? – Makoto 2013-03-05 02:15:34
重複/類似的問題? http://stackoverflow.com/questions/11425344/what-is-the-complexity-big-o-of-this-algorithm – apnorton 2013-03-05 02:16:27
@anorton - 是的,這看起來像一個重複。謝謝!我正在通過另一個線程的答案,並將其標記爲已關閉。 – 2013-03-05 02:18:01