예상 실행 시간 : 예상 값 T(n)
을 찾고 있습니다. 따라서 실행 시간에 대한 임의 변수는 T(n)
이라고합시다. 파티션에 해당하는 각각의 n
가능한 결과가 있습니다 이들의
T(0) + T(n-1) + c
T(1) + T(n-2) + c
...
T(n-1) + T(0) + c
하나가 뽑힐 것입니다가, X(i) = 1 if T(i) + T(n - i - 1) + c
가 선택됩니다하자, 그렇지 않으면 0
. T(n)
의 재발은 다음과 같이 쓸 수있다 :
T(n) = X(0)(T(0) + T(n-1) + c) + ... + X(n-1)(T(n-1) + T(0) + c)
지금 기대를 계산하기 위해, 우리는 쓰기 :
E(T(n)) = E(X(0)(T(0) + T(n-1) + c) + ... + X(n-1)(T(n-1) + T(0) + c))
= (1/n)E(2T(0) + 2T(1) + ... + 2T(n-1) + cn)
= (2/n)(E((T(0)) + ... + E(T(n-1))) + c.
세 번째 라인은 기대의 선형성을 얻었다. 이 시점에서 우리는 E(T(i))
에 대한 답을 추측하고 유도를 사용하여이를 증명합니다. 이 기술을 대체라고합니다. E(T(i)) <= Ai
, A > 0
및 1 <= i < n
에 대한 : 추측
- .
- 베이스 : i = 1 인 경우 배열은 이미 정렬되어 있으므로 예상 실행 시간은 일정합니다.
- 유도 :
E(T(n)) <= (2A/n)(n(n-1)/2) = A(n-1) <= An
.
그래서 주장은 n. 예상 된 실행 시간은 O(n)
입니다.
위키 백과에서 답변을 찾을 수 있습니다 –
Dear @ LoïcFaure-Lacroix, Theta (n)을 알고 있지만 어떻게 얻었는지 혼란스럽게 생각합니다! –
좋은 강의 노트는 다음과 같습니다 : [알고리즘 분석 I : 무작위 단축 프로그램] (http://alg12.wikischolars.columbia.edu/file/view/QUICKSORT.pdf). 그래도 "상수 파티션"이 무슨 뜻인지 잘 모르겠습니다. 파티션/정렬의 각 반복은 다른 값을 사용합니다. – jww