80 likes | 358 Views
QuickSort. Divide : A [ p…r ] bos olmayan iki alt diziye bolunur, A [ p…q ] ve A [ q+1…r ] s.t. oyleki A [ p…q ] nin her bir elemani A [ q+1…r ] . Nin herbir elemanindan kucuk veya kucuk esit. Conquer : iki alt dizi quicksort e recursive cagrimla siralanir
E N D
QuickSort • Divide: A[p…r] bos olmayan iki alt diziye bolunur, A[p…q] ve A[q+1…r] s.t. oyleki A[p…q] nin her bir elemani A[q+1…r]. Nin herbir elemanindan kucuk veya kucuk esit. • Conquer: iki alt dizi quicksort e recursive cagrimla siralanir • Combine: herhangi bir islem yapilmaz cunku alt diziler kendi aralarinda zaten sirali Algoritma Analizi
Quicksort (A, p, r) 1. if p < r 2. then qPartition(A, p, r) 3. Quicksort(A, p, q) 4. Quicksort(A, q+1, r) * In place, not stable Algoritma Analizi
Partition(A, p, r) 1. x A[p] 2. i p - 1 3. j r + 1 4. while TRUE do 5. repeat j j - 1 6. untilA[j] x 7.repeat i i + 1 8. untilA[i] x 9. if i < j 10. then exchange A[i] A[j] 11. else return j Algoritma Analizi
Example: Partitioning Array Algoritma Analizi
Algorithm Analysis Quicksort un calisma zamani partition (bolumleme) nin balanced (dengeli) olup olmadigina baglidir • Worst-Case Performance (unbalanced): T(n) = T(1) + T(n-1) + (n) partitioning takes (n) = k = 1 to n(k) T(1) takes (1) time & reiterate = ( k = 1 to nk ) = (n2) * This occurs when the input is completely sorted. Algoritma Analizi
Worst Case Partitioning Algoritma Analizi
Best Case Partitioning Algoritma Analizi
Analysis for Best Case Partition • Eger her tefasinda balanced partition elde edersek (alt diziler n/2 boyunda), en iyi performansi elde etmis oluruz. T(n) = 2T(n/2) + (n) T(n) = (nlog n) Algoritma Analizi