1 / 13

Lower Bounds for Sorting

Lower Bounds for Sorting. Input elementlerinin karsilastirilmasina dayanarak siralama yapan sorting algoritmalari siralama yapmak icin en kotu durumda  ( n lg n ) karsilastirma yapmali. Dolayisiyle merge sort ve heapsort asymptotik olarak optimal.

emmy
Download Presentation

Lower Bounds for Sorting

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lower Bounds for Sorting • Input elementlerinin karsilastirilmasina dayanarak siralama yapan sorting algoritmalari siralama yapmak icin en kotu durumda (n lg n) karsilastirma yapmali. Dolayisiyle merge sort ve heapsort asymptotik olarak optimal. • Diger siralama algoritmalari (counting sort, radix sort, bucket sort) karsilastirma isleminden farkli islemler kullanmak suretiyle siralama yapanlarin orderi daha iyi olabilir-- run in linear time. Algoritma Analizi

  2. Decision Tree • Herbir internal node ai: aj ile ilistirilir (1 i,jn.) Her bir leave (yaprak) a ise bir permutation (i) ilistirilir. Algoritma Analizi

  3. Lower Bound for Worst Case • N elementi siralayan bir decision tree nin yuksekligi (n lg n). Proof: n elementin n! tane permutation i var. Her bir permutasyon farkli bir siralamanin sirasini gosterir, tree en azindan n! yapraga sahip. h yukseklige sahip bir binary tree 2h le yapraktan fazla yapraga sahip olamayacagindan , n! 2h  h  lg(n!) By Stirling’s approximation: n! > (n/e)n h  lg(n!)  lg(n/e)n = n lg n - n lg e = (n lg n) Algoritma Analizi

  4. Counting Sort • n input elementinin her biri 1 ile k arasinda bir integer, ve k = O(n) ise siralama O(n) zaman alir. Algoritma Analizi

  5. Counting-Sort (A, B, k) 1. for i1 to k do 2. C[i]  0 3.for j1 to length[A] do 4. C[A[j]] C[A[j]] + 1 5. for i2 to k do 6. C[i] C[i] + C[i-1] 7. for jlength[A] downto 1 do 8. B[C[A[ j ]]] A[j] 9.C[A[j]] C[A[j]] - 1 Algoritma Analizi

  6. Algorithm Analysis • Toplam running time: O(n+k). k=O(n), oldugunda worst case:O(n). • for-loop of lines 1-2 takes timeO(k) • for-loop of lines 3-4 takes timeO(n) • for-loop of lines 5-6 takes timeO(k) • for-loop of lines 7-9 takes timeO(n) • Stable, in place degil. • Karsilastirma yapilmiyor: Elemanlarin degerleri kullanilarak array indeksleniyor Algoritma Analizi

  7. Radix Sort • Once “least significant digit” (en degersiz digit) e gore siralama yap, daha sonra geri kalan digitlere gore siralama yap. Her bir digit e gore siralama yapan siralama metodu “stable” olmali • The key is sort the “least significant digit” first and the remaining digits in sequential order. The sorting method used to sort each digit must be “stable”. Algoritma Analizi

  8. Ornek 392 631 928 356 356 392 631 392 446 532 532 446 928  495 446  495 631 356 356 532 532 446 392 631 495 928 495 928    Algoritma Analizi

  9. Radix-Sort(A, d) 1. for i1 to d 2. do use a stable sort to sort array A on digit i Algoritma Analizi

  10. Algorithm Analysis • Her bir iteration (n+k) zaman alir. • Iteration sayisi n: radix sort icin gerekli running time (d n+ d k) dir. • d sabit ve k = O(n) ise, radix sort un komplexitesi linear dir. • Eger radix sort counting sort u ara stable sort olarak kullaniyorsa, in place siralama yapmaz. • Eger memory storage onemli ise, ara siralama icin quicksort veya diger sorting algoritmalari kullanmak tercih edilebilir. Algoritma Analizi

  11. Bucket Sort • Counting sort ve radix sort integer lar icin iyi sorting algoritmalaridir. Floating point sayilar icin bucket sort veya diger comparison-based metodlar kullanilir. • Input un random bir islemle [0,1) araliginda uniform olarak uretildigini dusunelim (diger araliklar [0,1) araligina scale edilebilir) • Temel fikir: araligi n tane esit boyda alt araliklara (buckets) bol, daha sonra n input sayilarini bucket lere yerlestir. Her bir bucket deki elementler kendi icinde siralanir. Daha sonra butun bucket deki sirali elementler birlestirilir. Algoritma Analizi

  12. An Example Algoritma Analizi

  13. Bucket-Sort (A) 1. n length[A] 2. for i1 to n 3. do insert A[i] into list B[ nA[i] ] 4. for i0 to n-1 5. do sort list B[i] with insertion sort 6. Concatenate the lists B[i]s together in order Algoritma Analizi

More Related