전형적인 는 작업을 선형 시간 으로 나누고 조각으로 반복 하는 분할 및 정복 알고리즘 입니다. 병합 정렬은 다음과 같은 방식으로 작동합니다. 입력을 두 개의 대략 같은 조각으로 나누는 데 O ( n ) 시간을 소비하고, 각 조각을 재귀 적으로 정렬하고 , 두 개의 정렬 된 반쪽을 결합하는 데 Θ ( n ) 시간을 소비 합니다.Θ(nlogn)O(n)Θ(n)
직관적으로, 분할 및 정복 아이디어를 계속하면 분할에 걸리는 시간이 선형이기 때문에 분할 할 조각의 수가 증가하면 조각의 크기가 줄어드는 것과 정확히 일치하기 때문에 각 분할 단계는 총 선형 시간이 걸립니다. 총 실행 시간은 분할 단계의 총 비용에 분할 단계 수를 곱한 값입니다. 조각의 크기가 매번 반으로 줄어들 기 때문에 나누기 단계가 있으므로 총 실행 시간은 n ⋅ log ( n ) 입니다. (승수 상수까지는 로그의 밑이 중요하지 않습니다.)log2(n)n⋅log(n)
그것을 방정식 ()에 넣으면, 그러한 알고리즘 의 실행 시간 을 추정하는 한 가지 방법 은 그것을 재귀 적으로 표현하는 것입니다 : T ( n ) = 2 T ( n / 2 ) + Θ ( n ) . 이 알고리즘은 선형 시간보다 많은 시간이 걸리며 n : T ( n ) 로 나눠서 더 많은 것을 볼 수 있습니다 .
T(n)T(n)=2T(n/2)+Θ(n)nN배로,T(N)/N일정한 양만큼 증가 :T(N)/N이 증가 대수, 또는 환언하면,T(N)=Θ(N로그N).
티( n )엔= T( n / 2 )n / 2+ Θ ( 1 )
엔티( n ) / nT(n)/nT(n)=Θ(nlogn)
이것은보다 일반적인 패턴 인 마스터 정리 입니다. 어떤 재귀 알고리즘이 분할 크기의 입력 으로 크기의 조각 N / B 및 시간 소요 F ( N ) 분할 및 재결합, 실행 시간을 만족 수행 T ( N을 ) = ⋅ T를 ( N / B ) + f ( n ) . 의 값에 따라 닫힌 형상이 리드 및 B 및 형상nan/bf(n)T(n)=a⋅T(n/b)+f(n)ab . 만약 = B 와 F ( N ) = Θ ( N ) , 그 마스터 정리 상태 T ( N ) = Θ는 ( N 로그 N ) .fa=bf(n)=Θ(n)T(n)=Θ(nlogn)