390 likes | 603 Views
Searching & Sorting. Algoritma sorting yang akan dibahas: insertion sort merge sort two way merge sort quick sort heap sort Sorting secara ascending kecil – besar desceding besar – kecil. Insertion Sort (1). misal: 10 2 5 7 8 11 3 2 diurutkan ascending
E N D
Algoritma sorting yang akan dibahas: • insertion sort • merge sort • two way merge sort • quick sort • heap sort • Sorting secara • ascending kecil – besar • desceding besar – kecil
Insertion Sort (1) misal: 10 2 5 7 8 11 3 2 diurutkan ascending ------------------------------------------------------------------------------- Mulai dari i = 2 10 2 5 7 8 11 3 2 ^ 2 disisipkan pada lokasi: di depan 10 jadi: 2 10 5 7 8 11 3 2 ------------------------------------------------------------------------------- i = 3 2 10 5 7 8 11 3 2 ^ 5 disisipkan pada lokasi: di antara 2 dan 10 jadi: 2 5 10 7 8 11 3 2 ------------------------------------------------------------------------------- i = 4 2 5 10 7 8 11 3 2 ^ 7 disisipkan pada lokasi: di antara 5 dan 10 jadi: 2 5 7 10 8 11 3 2 Dan Seterusnya
Insertion Sort (2) misal: 10 2 5 7 8 11 3 2 diurutkan ascending i=0 : - i=1 : -, 10 i=2 : -, 2, 10 i=3 : -, 2, 5, 10 i=4 : -, 2, 5, 7, 10 Dst. Diurutkan descending i=0 : + i=1 : +, 10 i=2 : +, 10, 2 i=3 : +, 10, 5, 2 i=4 : +, 10, 7, 5, 2 Dst.
Merge 10 2 5 6 23 5 6 7 2 1 n = 10 SPLIT (berdasarkan hasil n div 2) (10 2 5 6 23 )( 5 6 7 2 1) n = 5 n = 5 (10 2 )( 5 6 23 )( 5 6 )( 7 2 1) n = 2 n = 3 n = 2 n = 3 ( 10 )( 2 )( 5 )( 6 23 )( 5 )( 6 )( 7 )( 2 1 ) n=1 n=1 n=1 n=2 n=1 n=1 n=1 n=2 ( 10 )( 2 )( 5 )( 6 )( 23 )( 5 )( 6 )( 7 )( 2 )( 1 ) MERGE (Berdasarkan urutan split) ( 10 )( 2 )( 5 )( 6 23 )( 5 )( 6 )( 7 )( 1 2 ) ( 2 10 ) ( 5 6 23 ) ( 5 6 ) ( 1 2 7 ) ( 2 5 6 10 23 )( 1 2 5 6 7 ) ( 1 2 2 5 5 6 6 7 10 23 )
Two Way Merge Sort 10 2 5 6 23 5 6 7 2 1 (2,10) (5,6) (5,23) (6,7) (1,2) (2,5,6,10) (5,6,7,23) (1,2) (2,5,5,6,6,10,23) (1,2) (1,2,2,5,5,6,6,10,23)
Quick Contoh : 5 4 3 1 3 5 7 1 5 Akan diurutkan secara Ascending Pilih data pertama sebagai Pivot kemudian letakkan semua angka yang lebih kecil di kiri dan yang lebih besar di kanan Kemudian lanjutkan untuk kedua belah sisi sampai semua telah menjadi pivot 4 3 1 3 1 | 5 | 5 7 5 3 1 3 1 | 4 | 5 | 5 | 5 7 1 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7 1 | 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7 1 | 1 | 3 | 3 | 4 | 5 | 5 | 5 | 7
Radix Radix Sort : Sorting data yang memanfaatkan aplikasi linked-list Caranya : membagi data dalam beberapa kolom (pocket), selanjutnya mengurutkan data berdasarkan karakter pada posisi kolom terakhir sampai kolom pertama. Apabila maksimum jumlah digit dari data tersebut adalah “m”, maka ada m tahap pengurutan.
Sorting menggunakan RADIX-SORT Contoh: 73, 65, 52, 77, 24, 83, 17, 35, 96, 62, 41, 87, 09, 11 Jumlah iterasi (m) = jumlah digit Gabungkan: 41, 11, 52, 62, 73, 83, 24, 65, 35, 96, 77, 17, 87, 09
Sorting menggunakan RADIX-SORT • Iterasi Ke 2 • Gabungkan : 09, 11, 17, 24, 35, 41, 52, 62, 65, 73, 77, 83, 87, 96 (hasilnya)
Heap • Diberikan input file • Lakukan insert data dalam binary tree • Lakukan sorting pada binary tree untuk masing-masing heap • Hasil sorting merupakan inisialisasi heap • Lakukan heap sort
Insert Data Urutan data :7, 11, 4, 3, 25, 60, 41 Tree disusun berurutan, insert anak kiri dahulu Phase 1 : Buat Binary Tree 7 11 4 3 25 60 41
Phase 2 : Inisialisasi/Building Heap Parent/root harus lebih besar daripada anak-anaknya 7 7 4 11 4 25 3 11 60 41 3 25 60 41
Phase 2 : Inisialisasi/Building Heap Parent/root harus lebih besar daripada anak-anaknya 7 7 4 25 25 60 3 11 60 41 3 11 4 41
Phase 2 : Inisialisasi/Building Heap Parent/root harus lebih besar daripada anak-anaknya 7 60 25 60 25 7 3 11 4 41 3 11 4 41
Phase 2 : Inisialisasi/Building Heap Parent/root harus lebih besar daripada anak-anaknya 60 60 25 7 25 41 3 11 4 41 3 11 4 7 Kondisi Heap terpenuhi
Phase 3 : Heap Sort / Removing Heap (Yang dihapus adalah root, sebagai gantinya adalah anak terbawah paling kanan) Heap Sort, i = 7, Sorting = { 60 } 60 7 25 41 25 41 3 11 4 7 3 11 4
Phase 3 : Heap Sort Heap Sort, i = 7, Sorting = { 60 } 7 41 25 41 25 7 3 11 4 3 11 4
Phase 3 : Heap Sort Heap Sort, i = 6, Sorting = { 60, 41 } 41 4 25 7 25 7 3 11 4 3 11
Phase 3 : Heap Sort Heap Sort, i = 6, Sorting = { 60, 41 } 4 25 25 7 4 7 3 11 3 11
Phase 3 : Heap Sort Heap Sort, i = 6, Sorting = { 60, 41 } 25 25 4 7 7 11 3 11 3 4
Phase 3 : Heap Sort Heap Sort, i = 5, Sorting = { 60, 41, 25 } 4 25 7 7 11 11 3 4 3
Phase 3 : Heap Sort Heap Sort, i = 5, Sorting = { 60, 41, 25 } 4 11 7 7 11 4 3 3
Phase 3 : Heap Sort Heap Sort, i = 4, Sorting = { 60, 41, 25, 11 } 11 3 7 7 4 4 3
Phase 3 : Heap Sort Heap Sort, i = 4, Sorting = { 60, 41, 25, 11 } 3 7 7 3 4 4
Phase 3 : Heap Sort Heap Sort, i = 3, Sorting = { 60, 41, 25, 11, 7 } 3 7 3 4 4
Phase 3 : Heap Sort Heap Sort, i = 3, Sorting = { 60, 41, 25, 11, 7 } 3 4 4 3
Phase 3 : Heap Sort Heap Sort, i = 2, Sorting = { 60, 41, 25, 11, 7, 4 } 4 3 3
Phase 3 : Heap Sort Heap Sort, i = 1, Sorting = { 60, 41, 25, 11, 7, 4, 3 } 3
Phase 3 : Heap Sort Heap Sort, i = 0, Sorting = { 60, 41, 25, 11, 7, 4, 3 }
Searching: • Algoritma Searching yag akan dibahas: • Binary Search Tree • Fibonacci Search Tree • Linier Interpolation
Binary Search Tree • Kmid = (K1 + Kn) / 2 dibulatkan ke bawah (floor function) • Contoh: 2, 3, 4, 9, 11, 12, 13, 17, 18, 20, 24, 25, 27, 29, 30, 35, 37, 39, 40, 45 • Kmid = (1+20) / 2 = 10
Binary Tree yang Terbentuk K10 K15 K18 K5 K12 K19 K16 K11 K13 K20 K17 K2 K7 K14 K8 K1 K3 K6 K9 K4
Fibbonaci Search Tree • Fib = Fm + Fm+1 Barisan bilangan Fibbonaci: 1,1,2,3,5,8,13,21,34,55,… n=20 Maka yang diambil root adalah bilangan di bawah n atau sama dengan bil Fibbonaci, yaitu 13. Dibulatkan ke atas (ceiling function)
Fibbonaci Search Tree K13 K18 K20 K8 K16 K15 K17 K19 K5 K11 K14 K7 K3 K10 K12 K6 K2 K4 K9 K1
Linear Interpolation (y – yL) / (yu – yL) = (x – xL) / (xu – xL) (15 – 2) / (21 – 2) = (x – 1) / (9 – 1) x = (104/19) + 1 = 5,…. + 1 = 5 + 1 = 6
Tugas Suatu file tidak terurut dengan key sebagai berikut: 5,7,8,3,2,1,6,9,15,14,12,13,11,4,10 Lakukan sort secara ascending dengan menggunakan : • Insertion Sort • Quick Sort • Two-way Merge Sort • Heap Sort • Radix Sort • Kemudian gambarkan pohon binernya (binary tree) yang menunjukkan algoritma penelusuran dari soal no. 1 dengan menggunakan: • BST • FST