더북(TheBook)

1.2 실행 시간과 복잡도

 

 

알고리즘 1-1은 주가 스팬 문제에 대한 해법인데, 이보다 더 빨리 실행될 수 있는 더 나은 알고리즘이 있을 수도 있다. 알고리즘에서 속도는 알고리즘이 실행할 연산 수를 말한다. 컴퓨터가 아무리 빨라지고 연산을 더 빨리 실행할 수 있을지라도 연산 수는 동일하므로 연산 수의 관점에서 알고리즘 성능을 평가하는 것이 합리적이다. 그래서 시간 단위로 측정되지 않는 순수한 숫자이긴 하지만, 연산 수를 알고리즘의 실행 시간(running time)이라고 한다. 시간 단위를 사용하는 것은 특정 컴퓨터 모델과 관계된 실행 시간 추정일 수 있으므로 유용하지 않다고 본다.

기간 n 동안의 주가 스팬을 구하는 데 걸리는 시간을 살펴보자. 알고리즘은 2행에서 시작하여 주가(quote)마다 한 번씩 n번을 수행하는 루프로 구성된다. 그리고 이 외부 루프가 반복될 때마다 각 주가 스팬을 찾는 내부 루프가 있다. 각 주가에 대해 이전 모든 주가와 해당 주가를 비교하는데, 최악의 경우 해당 주가가 최고가라면 이전 모든 주가를 조사하게 된다. 주가 k가 이전 모든 주가 가운데 가장 높다면 내부 루프는 k번 실행된다. 따라서 최악의 경우, 주가가 오름차순으로 되어 있다면 7행은 다음 횟수만큼 실행된다.

 

이 식은 숫자 1, 2, …, n을 다음과 같이 두 번 더해 보면 쉽게 이해할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.