Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

DANDC wijanarto. Why SORT Banyak di pakai dalam aplikasi Database  binary sort Computer graphic dan komputasi geometri Closest pair dan keunikan suatu.

Presentasi serupa


Presentasi berjudul: "DANDC wijanarto. Why SORT Banyak di pakai dalam aplikasi Database  binary sort Computer graphic dan komputasi geometri Closest pair dan keunikan suatu."— Transcript presentasi:

1 DANDC wijanarto

2 Why SORT Banyak di pakai dalam aplikasi Database  binary sort Computer graphic dan komputasi geometri Closest pair dan keunikan suatu elemen

3 Algoritma Insertion dan selection sort : worst case O(n 2 ) Heap sort (quick sort) : worst case O(n log n)

4 DIVEDE AND CONQUER Divide – Bagi masalah asli menjadi dua atau lebih sub problem yang unik Conquer – Gunakan DANDC secara rekursif untuk menyelesaikan subproblem Combine – Ambil solusi dari subproblem dan merge solusi tersebut ke dalam solusi untuk masalah aslinya

5 Merge sort Divide – Jika S memiliki setidaknya 2 elemen, pindahkan seluruh elemen S dan letakan dalam 2 urutan S1 dan S2, tiap urutan mengandung setengah dari S S1=  n/2  elemen dan s2= sisanya  n/2  elemen Conquer – SORT s1 dan s1 dengan merge sort Combine – Kembalikan elemen tadi ke S dengan menggabungkan urutan yang telah di sort S1 dan S2 menjadi 1 urutan sort

6 Algoritma Merge Sort Merge-Sort(A,p,r) If p { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.info/10/2814628/slides/slide_6.jpg", "name": "Algoritma Merge Sort Merge-Sort(A,p,r) If p

7 85 24 63 45 85 24 63 45 17 31 50 96 contoh

8 Running algoritma 85 24 63 45 17 31 50 96

9 Running algoritma 85 24 63 45 85 24 85 24 63 45 17 31 50 96

10 Running algoritma 85 24 63 45 85 24 85 24 63 45 85 17 31 50 96

11 Running algoritma 85 24 63 45 24 85 24 63 45 85 17 31 50 96

12 Running algoritma 85 24 63 45 85 85 24 63 45 24 17 31 50 96

13 Running algoritma 85 24 63 45 24 85 63 45 17 31 50 96

14 Running algoritma 85 24 63 45 63 4524 85 17 31 50 96

15 Running algoritma 85 24 63 45 63 45 24 85 17 31 50 96

16 Running algoritma 85 24 63 45 45 63 24 85 17 31 50 96

17 Running algoritma 85 24 63 45 24 8545 63 17 31 50 96

18 Running algoritma 85 24 63 45 24 4563 85 17 31 50 96

19 Running algoritma 85 24 63 45 24 4563 85 17 31 50 9624 45 63 85

20 Running algoritma 85 24 63 45 24 4563 85 17 31 50 9624 45 63 85 Langkah selanjutnya sama dengan bagian pertama

21 Merging 2 seq array S1 S2 S 24456385 17315096 S1 S2 S 24456385 315096 a b 17

22 Merging 2 seq array S1 S2 S 456385 315096 c 1724 S1 S2 S 456385 5096 d 172431

23 Merging 2 seq array S1 S2 S 6385 5096 e 17243145 S1 S2 S 6385 96 f 1724314550

24 Merging 2 seq array S1 S2 S 85 96 g 172431455063 S1 S2 S 96 h 17243145506385

25 Merging 2 seq array S1 S2 S 96 i 17243145506385

26 Merge revisi 1 5244326 1 52443264326 1 5242443432626 15244326 242443432626 1 24523462346 1 2234466 Untuk men-SORT sejumlah n Jika n=1 selesai Reccuren sort 2 list sejumlah  n/2  dan  n/2  elemen Merge 2 list tsb dlm O(n) Strategi Pecah masalah mjd subproblem yg mirip Reccuren sub masalah Combine solusi split merge Input output

27 C implementation void mergesort(int numbers[], int temp[], int array_size){ m_sort(numbers, temp, 0, array_size - 1); } void m_sort(int numbers[], int temp[], int left, int right){ int mid; if (right > left) { mid = (right + left) / 2; m_sort(numbers, temp, left, mid); m_sort(numbers, temp, mid+1, right); merge(numbers, temp, left, mid+1, right); }

28 C implementation void merge(int numbers[], int temp[], int left, int mid, int right){ int i, left_end, num_elements, tmp_pos; left_end = mid - 1; tmp_pos = left; num_elements = right - left + 1; while ((left <= left_end) && (mid <= right)) { if (numbers[left] <= numbers[mid]) { temp[tmp_pos] = numbers[left]; tmp_pos = tmp_pos + 1; left = left +1; } else

29 C implementation {temp[tmp_pos] = numbers[mid]; tmp_pos = tmp_pos + 1; mid = mid + 1; } } while (left <= left_end) { temp[tmp_pos] = numbers[left]; left = left + 1; tmp_pos = tmp_pos + 1; } while (mid <= right) { temp[tmp_pos] = numbers[mid]; mid = mid + 1; tmp_pos = tmp_pos + 1; } for (i=0; i <= num_elements; i++) { numbers[right] = temp[right]; right = right – 1; } }

30 Quick Sort Karakteristik – Sort dalam satu “tempat”, tidak perlu array tambahan – Sangat praktis, avarage case O(n log n), worst case O (n 2 )

31 Prinsip Quick Sort Melihat deskripsi high level algorithm DANDC – Divide Partisi array mjd 2 sub array s.r.s dalam bagian lower <= bagian higher – Conquer Sort Recursive 2 sub array tadi – Combine Sort selesai di “tempat” tadi

32 Partitioning (pembagian) wt=linear Partition(A,p,r) /*p & r batas array A*/ x  A[p] i  p-1 j  r+1 While TRUE REPEAT j  j-1 UNTIL A[j]>= x REPEAT i  i+1 UNTIL A[i]<= x and i<=r if i>=j break; Tukar(A[i],A[j]) Tukar(A[p],A[j]) Return j 1712619238510 i j pr 12619238517 j  x=10  i 1056192381217 ji 1056823191217 ji Mengembalikan posisi partisi dari array A

33 Algoritma Quick Sort Pemanggilan Quicksort(A,1,pjg[A]) Quicksort(A,p,r) if p { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.info/10/2814628/slides/slide_33.jpg", "name": "Algoritma Quick Sort Pemanggilan Quicksort(A,1,pjg[A]) Quicksort(A,p,r) if p

34 Analisa Quicksort Asumsikan semua elemen berbeda Running time tergantung dari distribusi spliting array Spliting partisi perlu waktu

35 Best case n n/2 n/4 n/8 lg n 11111111111111111 1 111 n n n n n  (n lg n) Running time tree adalah lg n, jadi total waktu tempuhnya adalah n lg n, Karena setiap level pada tree adalah n, Worst case =  (n 2 )

36 Randomize Quicksort Asumsi semua elemen berbeda Partisi di pilih secara random dalam elemen Konsekuensinya semua split (1:n-1,1:n-2,…, n-1:1) mirip dengan probabilitas 1/n Randomisasi merupakan alat generalisasi untuk meningkatkan algoritma dengan worst case yang jelek tetapi bagus untuk avarage case

37 Randomize Quicksort RandomizePartition(A,p,r) i  Random(p,r)//generate angka //random antara p dan r Tukar(A[r],A[i]) return Partition(A,p,r) RandomizeQS(A,p,r) if p { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.info/10/2814628/slides/slide_37.jpg", "name": "Randomize Quicksort RandomizePartition(A,p,r) i  Random(p,r)//generate angka //random antara p dan r Tukar(A[r],A[i]) return Partition(A,p,r) RandomizeQS(A,p,r) if p

38 Analisis Randomize Quicksort Misal T(n), adalah waktu yang di butuhkan dalam perbandingan dalam quicksort sejumlah n Karena split butuh probabilitas 1/n, maka T(n) bernilai = T(i-1)+T(n-i)+n-1, jadi Sehingga dg solving recc mjd O(n log n)

39 Analisis Randomize Quicksort Worstcase =O(n 2 ) Bestcase=O(n log n) Expected running time quicksort O(n log n)

40 Searching Binary search Interpolasi search

41 Binary Search t[1..n] data tersortir menaik, t[i]  t[j], dimana 1  i  j  n. X adalah elemen yang di cari dalam t, jika x tidak ada dalam t, maka kita dapat menyisipkannya ke t. Problem : mencari index I sedemikian rupa sehingga 1  i  j  n dan t[i-1]< x  t[i]

42 Binary Search dengan DANDC Binsearch (t[1..n],x) { if n==0 and x> t[n] then return n+1 else return Binrecc(t[1..n],x) } Binrecc (t[1..n],x) { /*mencari x dalam array t*/ /*untuk t[i-1] { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.info/10/2814628/slides/slide_42.jpg", "name": "Binary Search dengan DANDC Binsearch (t[1..n],x) { if n==0 and x> t[n] then return n+1 else return Binrecc(t[1..n],x) } Binrecc (t[1..n],x) { /*mencari x dalam array t*/ /*untuk t[i-1] t[n] then return n+1 else return Binrecc(t[1..n],x) } Binrecc (t[1..n],x) { /*mencari x dalam array t*/ /*untuk t[i-1]

43 Binary Search dengan DANDC Mencari x=12 dalam array t -5-20388912 2631 1234567891011 ikj x  t[k] ? T Y Y T i=j berhenti ikj ikj ikj ij Binrecc (t[1..n],x) { if i=j then return i k  (i+j)\2 if x  t[k] then return Binrecc(t[1..k],x) else return Binrecc(t[k+1..j],x) }

44 Interpolasi Search


Download ppt "DANDC wijanarto. Why SORT Banyak di pakai dalam aplikasi Database  binary sort Computer graphic dan komputasi geometri Closest pair dan keunikan suatu."

Presentasi serupa


Iklan oleh Google