죄송 표준 lib 디렉토리 기능의 복잡성의 주문,하지만 ...이 바보 같은 질문 인 경우
이 코드의 복잡성의 순서는 (n)이 O입니다 :
char buf[] = "hello world";
size_t length = strlen(buf);
for(size_t i = 0; i < length; i++)
{
//do stuff
}
이 코드는 O (n^2) :
char buf[] = "hello world";
for(size_t i = 0; i < strlen(buf); i++)
{
//do stuff
}
strlen이 O (n)이기 때문에.
strlen은 O (n)이라고 말하면 표준에서 정의 되었습니까? O (n)이어야합니까?
을 알 수있는 방법은 무엇입니까? 표준 기능의 복잡도는 어떻게 될 것입니까?
은 복잡하지 않은 순서의 함수를 사용하는 코드의 복잡도 순서 자체를 알 수 없습니까? – Bagpuss
@Bagpuss : 예, 달리 지정하지 않는 한 모든 코드는 블랙 박스입니다. – sharptooth
그것은 당신이보고있는 복잡한 경계에 달려 있습니다. strlen의 경우, 최하위의 경우는 선형이지만, 구현을 알지 못하면 상한을 알 수 없습니다. 그러나 선형 알고리즘이 일종의 분명한 사실을 감안할 때 상식적으로 선형 알고리즘은 그러한 방식으로 구현됩니다. – ltjax