2017-06-05 9 views
1

Ich möchte die Zeit Komplexität des folgenden rekursiven Algorithmus berechnen, woBerechnung der Zeitkomplexität von rekursiven Algorithmus T (n) = T (k) + T (nk)

n = j - i (size of array) 
i ≤ k ≤ j 
process(A, i, j) takes Θ(n) time 

Algo(Array A[], int i, int j) 
    if (i<j) 
     k = process(A, i, j) 
     Algo(A, i, k) 
     Algo(A, k+1, j) 

ich kam mit die folgenden:

Ich bin mir nicht sicher, ob das richtig ist und wenn es ist, wie davon zu gehen?

Update:

Ist das folgende richtig?

Der schlimmste Fall Wert für k i oder j,

T(n) = Θ(n) + T(0) + T(n) 
+4

Dies sollte eher auf https://cs.stackexchange.com/ – Adrian

+1

veröffentlicht werden Dies sollte 'O (nlogn)' nehmen, sieht es ähnlich zu Merge sort – Oswald

+0

@ Oswald in merge sort, k = n/2, aber hier kann es eine beliebige Zahl zwischen i und j sein. Wird das die Lösung beeinflussen? – SachiDangalla

Antwort

2

Diese rekursive Struktur ist eher wie schnell sortieren, deren Worst-Case-Laufzeit ist O(n^2).

algorithm quicksort(A, lo, hi) is 
    if lo < hi then 
     p := partition(A, lo, hi) 
     quicksort(A, lo, p – 1) 
     quicksort(A, p + 1, hi) 

Der Partitionsalgorithmus dauert O(N) Zeit. Für die Analyse wenden Sie sich bitte an Quick-Sort. Ich kann es nicht besser erklären.

Verwandte Themen