1 / 44

Algoritma dan Struktur Data

Algoritma dan Struktur Data. Linear & Binary Search Tree. Linear Search. struct { int key; int data; } table[100]; int n; int search(int key) { int i; i=0; while (i < n){ if(table[i].key==key) return(table[i].data); i++; } return -1; }. statement. (1). (2).

Download Presentation

Algoritma dan Struktur Data

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. Algoritma dan Struktur Data Linear & Binary Search Tree

  2. Linear Search struct { int key; int data; } table[100]; int n; int search(int key) { int i; i=0; while (i < n){ if(table[i].key==key) return(table[i].data); i++; } return -1; } statement (1) (2) (3) (4) (5) (6)

  3. Cara kerja Linear Search key data 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  4. Cara kerja Linear Search key data search(18) i=0 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  5. Cara kerja Linear Search key data search(18) i=1 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  6. Cara kerja Linear Search key data search(18) i=2 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  7. Cara kerja Linear Search key data search(18) i=3 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  8. Cara kerja Linear Search key data search(18) i=4 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  9. Cara kerja Linear Search key data search(18) i=5 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  10. Cara kerja Linear Search key data search(18) i=6 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 table0 1 2 3 4 5 6 7 8 99

  11. Cara kerja Linear Search key data search(18) i=6 1 3 4 8 13 14 18 20 21 130 … 10 12 14 16 18 20 22 24 26 26 return(table[6].data) = 22

  12. Binary Search int binary_search(int key) { int low, high, middle; low = 0; high = n-1; while (low <= high){ middle = (low+high) / 2; if (key == table[middle].key) return(table[middle].data) else if(key < table[middle].key) high = middle – 1; else low = middle + 1; } return -1; } (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11)

  13. Cara kerja Binary Search key data binary_search(14) n=10 low=0 middle=4 high=9 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 table 0 1 2 3 4 5 6 7 8 9 Syarat Binary Search: Data harus sudah terurut (sorted)

  14. Cara kerja Binary Search key data binary_search(14) n=10 low=5 high=9 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 table 0 1 2 3 4 5 6 7 8 9 Syarat Binary Search: Data harus sudah terurut (sorted)

  15. Cara kerja Binary Search key data binary_search(14) n=10 low=5 middle=7 high=9 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 table 0 1 2 3 4 5 6 7 8 9 Syarat Binary Search: Data harus sudah terurut (sorted)

  16. Cara kerja Binary Search key data binary_search(14) n=10 high low 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 table 0 1 2 3 4 5 6 7 8 9 Syarat Binary Search: Data harus sudah terurut (sorted)

  17. Cara kerja Binary Search key data binary_search(14) n=10 high low middle 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 table 0 1 2 3 4 5 6 7 8 9 Syarat Binary Search: Data harus sudah terurut (sorted)

  18. Cara kerja Binary Search key data binary_search(14) n=10 middle 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 table 0 1 2 3 4 5 6 7 8 9 return(table[5].data) = 20 Syarat Binary Search: Data harus sudah terurut (sorted)

  19. Penambahan Data pada Linear Search Data yang ingin ditambahkan 17 31 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 Ditaruh di paling belakang 1 3 4 8 13 14 18 20 21 25 17 10 12 14 16 18 20 22 24 26 26 31

  20. Penambahan Data pada Binary Search Data yang ingin ditambahkan 17 Mencari tempat menaruh data 31 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 Menggeser data dengan nilai lebih besar ke belakang

  21. Penambahan Data pada Linear Search Data yang ingin ditambahkan 17 Mencari tempat menaruh data 31 1 3 4 8 13 14 18 20 21 25 10 12 14 16 18 20 22 24 26 26 1 3 4 8 13 14 18 20 21 25 17 10 12 14 16 18 20 22 24 26 26 31

  22. Apakah Binary Search Tree itu ? • Pemakaian tree structure dalam proses pencarian (search) • Sifat Binary Tree: Pada sebuah node x, • elemen yang berada di LEFT sub-tree selalu lebih KECIL daripada x • elemen yang berada di RIGHT sub-tree selalu lebih BESAR Atau SAMA DENGAN daripada x • Binary Search Tree: proses pencarian (SEARCHING) berbasis binary tree

  23. Operasi pada BST • Traversals • Searches • Insertion • Deletion

  24. Example of a binary search tree

  25. Traversals • Preorder traversal 23 18 12 20 44 35 52 • Postorder traversal 12 20 18 35 52 44 23 • Inorder traversal 12 18 20 23 35 44 52 Inorder traversal pada BST menghasilkan nilai yang terurut dari kecil ke besar

  26. Proses Pencarian (contoh SUKSES) search(7) 7<13 7>5 7==7 Data yang dicari BERHASIL ditemukan 13→5 →7

  27. Proses Pencarian (contoh GAGAL) search(8) 8<13 8>5 8>7 Data tidak ada Data yang dicari GAGAL ditemukan

  28. Proses Pencarian 6 search(7) 5 21 2 15 6→21 →15→13 →7 13 7 8

  29. Find the smallest node

  30. Find the smallest node

  31. Find the largest node right subtree not empty right subtree not empty right subtree empty return

  32. Proses Penambahan (INSERTION) insert(8) 8<13 8>5 8>7 Data tidak ada Data yang dicari GAGAL ditemukan = disitulah data ditambahkan (insertion)

  33. Tambahkan node: Penambahan Data pada Binary Search Tree 6 5 21 2 15 13 7 8

  34. Penambahan Data pada Binary Search Tree 6 5 21 2 15 13 8 7 • (b) • Perhatikan: • (b) lebih bercabang/panjang daripada (a), akibatnya • proses pencarian pada (b) lebih lama daripada (a) 8

  35. Penghapusan Data pada Binary Search Tree • Proses penghapusan data pada binary search tree lebih rumit daripada proses searching maupun proses insertion • Tahapan: • Carilah node yang akan dihapus • Apabila node tersebut leaf (tidak mempunyai anak), hapuslah node tersebut • Bila node tersebut memiliki 1 anak, setelah node dihapus, anaknya menggantikan posisi orangtuanya (node yang dihapus) 9 9 hapus “1” 5 5 1 7 7

  36. Penghapusan Data pada Binary Search Tree 9 9 hapus “5” 14 5 14 3 3 1 4 1 4

  37. Penghapusan Data pada Binary Search Tree • Proses penghapusan data pada binary search tree lebih rumit daripada proses searching maupun proses insertion • Tahapan: • Carilah node yang akan dihapus • Apabila node tersebut leaf (tidak mempunyai anak), hapuslah node tersebut • Bila node tersebut memiliki 1 anak, setelah node dihapus, anaknya menggantikan posisi orangtuanya (node yang dihapus) • Bila node tersebut memiliki 2 anak, setelah node dihapus, gantikan node tersebut dengan elemen terkecil dari right sub-tree ATAU elemen terbesar dari left sub-tree

  38. Penghapusan Data pada Binary Search Tree 20 20 hapus “7” 23 23 7 10 29 29 4 4 18 18 2 5 2 5 10 15 15

  39. node yang dihapus leaf (tidak mempunyai anak) Menghapus node dengan nilai terkecil 13 13 hapus “2” 20 5 20 5 2 7 7

  40. node yang mempunyai 1 anak Menghapus node dengan nilai terkecil 13 13 hapus “5” 20 5 20 10 10 7 11 7 11

  41. /* dltKey = root */

  42. (continued)

More Related