有人能告訴我以下代碼的時間複雜度嗎?下面代碼的時間複雜度?
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char a[100]= "Gosh I am confused :D";
int i,count= -1,display_ToVal= strlen(a)-1, display_FromVal;
for(i=strlen(a)-1 ; i>=0 ; i=i+count)
{
if ((a[i] == ' ' || i == 0) && count == -1)
{
cout << " ";
display_FromVal = i;
count = 1;
if (i == 0)
cout << a[i];
continue;
}
else if(count == 1 && i == display_ToVal)
{
cout << a[i];
display_ToVal = display_FromVal - 1;
i = display_FromVal;
count = -1;
if(display_FromVal == 0)
break;
else
continue;
}
else if (count == 1)
cout << a[i];
else
continue;
}
return 1;
}
我是否這可以被歸類爲O(n)的真的很困惑。請提前幫助,謝謝。
如果你告訴我們什麼讓你懷疑它是O(N),我們可以幫助你更好地理解。 – 2011-04-18 14:32:24
Nitpick:什麼是n,你的輸入大小是多少?正如所寫的,代碼不會接受任何輸入並在恆定時間內運行。 「Duh,字符串長度」並不是一個完整的答案,因爲它看起來像行爲依賴於字符串中的空格,而這又是輸入的另一個參數。 – 2011-04-18 14:38:51
@Cristopher:複雜性將取決於字符串的大小。 我認爲這裏的正確問題是這裏最好的,平均的和最差的時間複雜度。 – Elalfer 2011-04-18 14:46:56