假設我打印字符串的漸近複雜性,具體如下:的printf
printf("%s", s);
我們可以假設這個函數的漸近複雜性?
是否O(n)其中n是strlen(s) - 它的長度是多少?或者它不知何故是不變的。或者有些不同?不過,我想你應該知道printf是如何實現的。任何見解都被讚賞!
(我要澄清,我說的是C而不是C++,但我懷疑他們的實現方式不同)
編輯:添加格式化字符串的printf()
假設我打印字符串的漸近複雜性,具體如下:的printf
printf("%s", s);
我們可以假設這個函數的漸近複雜性?
是否O(n)其中n是strlen(s) - 它的長度是多少?或者它不知何故是不變的。或者有些不同?不過,我想你應該知道printf是如何實現的。任何見解都被讚賞!
(我要澄清,我說的是C而不是C++,但我懷疑他們的實現方式不同)
編輯:添加格式化字符串的printf()
它的複雜度爲O (m + n),其中m是輸入的大小,n是輸出的大小。
如果不傳遞額外的參數,如在你的情況下時間複雜度是O(2 * m)= O(m)。
但請注意,您的代碼可能會失敗,因爲s本身可能包含格式代碼,並且會產生Adriano指出的未定義/未知/不可預測/可能_very_bad結果。
正確的語法是'printf(「%s」,stringName);'。 –
有沒有很好的理由呢?畢竟,s已經是一個字符串了,那麼爲什麼它需要被printf格式化呢? – Miguel
@Miguel是的,因爲它可能包含自己的格式代碼,並且會產生未定義的/未知的/不可預知的/可能的_very_bad結果。 –