Может ли кто-нибудь рассказать мне о сложности времени для следующего кода?Сроки выполнения кода ниже?
#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), мы можем помочь вам лучше понять. –
Nitpick: Что такое n, ваш размер ввода? Как написано, код не принимает никакого ввода и работает в постоянное время. «Дух, длина строки» на самом деле не является полным ответом, так как похоже, что поведение зависит от пробелов в строке, что является еще одним параметром ввода. –
@Cristopher: Сложность в любом случае будет зависеть от размера строки. Я думаю, что правильный вопрос здесь - вот что такое наилучшая, средняя и худшая временная сложность. – Elalfer