26
STRUKTUR DATA By : Sri Rezeki Candra Nursari 2 SKS

SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Embed Size (px)

Citation preview

Page 1: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

STRUKTUR DATA

By : Sri Rezeki Candra Nursari

2 SKS

Page 2: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Literatur

• Sjukani Moh., (2007), “Struktur Data (Algoritma & Struktur Data 2) dengan C, C++”, Mitra Wacana Media

• Utami Ema. dkk, (2007),”Struktur Data (Konsep & Implementasinya Dalam Bahasa C & Free Pascal di GNU/Linux)”, Graha Ilmu

• Hubbard Jhon, R., Ph.D, (2000), “Schaum’s Outline Of Theory and Problems of Data Structures With C++” McGraw-Hill

• Bambangworawan Paulus., (2004), “Struktur Data Dengan C”, Andi Yogyakarta

Page 3: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Materi1. Data dan Struktur Data2. Array3. Struktur dan Record4. Pointer5. Linked List6. Stack (Tumpukan)7. Queue (Antrian)8. Tree (Pohon)9. AVL Tree10. Heap dan B-Tree11. Sorting12. Search13. Hashing14. Graph

Page 4: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

SEARCH

Pertemuan 14

2 SKS

Page 5: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

SEARCHING

Pencarian (searching) merupakan proses yang fundamental dalam pemrograman. Mencari data dengan menelusuri tempat penyimpanan data. Tempat penyimpanan data dalam memory dapat berupa array/linked listBeberapa metoda diantaranya adalah :

– Sequential Search– Binary Search– Fibonacci Search– Interpolation Search

Page 6: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Sequential Search Sequential Search/Pencarian Sekuential adalah proses

membandingkan setiap elemen Larik satu persatu secara beruntun, dari elemen pertama sampai elemen yang dicari ditemukan

Data yang ada pada suatu array dibandingkan satu persatu dengan data yang dicari

Pencarian ini hanya melakukan pengulangan dari 1 s.d. dengan jumlah data. Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir pengulangan, tidak ada yang sama, berarti data tidak ada

Page 7: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Sequential Search

Page 8: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Sequential Search

Algoritma Pencarian dengan metode Sequential Search / Pencarian Sekuensial adalah1. i 12. Ketemu False3. Selama (not ketemu) dan ( i N) kerjakan baris 44. Jika (Data[i] = x) maka ketemu true, jika tidak i i +

15. IF (ketemu) maka i adalah indeks dari data yang dicari,

jika tidak data tidak ditemukan

Page 9: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Sequential Search Algoritma Pencarian dengan metode Sequential Search

/ Pencarian Sekuensial adalah1. Tentukan dan simpan data dalam suatu array2. Tentukan fungsi pencarian sekuensial3. Fungsi pencarian sekuensial adalah sebagai berikut :

int flag=-1; {for(int count=0; count < array_size; count++) {

flag=count;break; } }

4. Masukkan data yang akan dicari5. Kerjakan langkah 3, jika data ketemu kerjakan lang-kah 6. Jika data

tidak ketemu lakukan langkah 66. Cetak data tersebut7. Selesai

Page 10: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

SequentialSearch

Page 11: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Output Sequential

Search

Page 12: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Binary Search

Pencarian sebuah elemen dalam sebuah array satu dimensi dengan cara selalu membandingkan dengan nilai yang berada di tengah array tersebutApabila tidak sama maka array akan

dibagi dua dan pencarian diulang pada bagian dimana nilai yang dicari.

Page 13: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Binary Search

Salah satu syarat pencarian bagi dua (binary search) adalah data sudah dalam keadaan terurutApabila data belum keadaan terurut,

pencarian biner tidak dapat dilakukanData yang terurut merupakan syarat

mutlak penerapan pencarian Algoritma pencarian Bagi Dua

Page 14: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Binary Search

Prinsip dari pencarian Biner1. Pertama diambil posisi awal =1 dan posisi akhir =N,

kemudian dicari posisi data tengah dengan rumus (posisi awal+posisi akhir)/2

2. Kemudian data yang dicari dibandingkan dengan data tengah

3. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah -1

4. Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1

5. Demikian seterusnya sampai data tengah sama dengan yang dicari

Page 15: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Binary SearchArray 1 dimensi dengan int A[10] = {4, 7, 10, 11, 16, 22, 24, 28, 63, 64}. Mencari titik tengah dari suatu bagian array, dan membandingkan nilainya dengan N. Langkahnya adalah sebagai berikut

1. Input N. Tentukan Lo=0; Hi=N-1; dan Flag=0 (untuk tanda tidak ditemukan yang dicari) Mid = (Lo + Hi)/2

2. Selama Lo <= Hi dan Flag==0 Hitung Mid=(Lo+Hi)/2 Bila N==A[Mid], isi Flag=1; (tanda ditemukan) Bila N<A[Mid], isi Hi=Mid-1, proses pencarian dibagian

kiri Bila N>A[Mid], isi Hi=Mid+1, proses pencarian dibagian

kanan3. Proses pencarian selesai

Page 16: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Binary Search

Hitung MidMID = (Lo + Hi)/2 = (6+10)/2 = 8A[Mid] = A[8] = 28

Periksa nilai NN > A[Mid] Lo = Mid-1

= 8-1 = 7

Hi tetap = 6

16

728

4 10 22 64

632411

Page 17: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Binary Search

Hitung MidMID = (Lo + Hi)/2 = (0+10)/2 = 5A[Mid] = A[5] = 16

Periksa nilai NN < A[Mid] Lo = Mid-1

= 5+1Hi tetap = 10

16

728

4 10 22 64

632411

Page 18: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

BinarySearch

Page 19: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

BinarySearch

Page 20: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

BinarySearch

Page 21: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

BinarySearch

Page 22: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Fibonacci SearchMerupakan pencarian sebuah elemen dalam

sebuah array satu dimensi dengan menggunakan angka fibonacci sebagai titik-titik (index) elemen array yang isinya dibandingkan dengan nilai yang dicari (misal N)

Salah satu syarat pencarian fibonacci adalah data sudah dalam keadaan terurut

Prosesnya hanya menggunakan operasi tambah dan kurang yang memerlukan waktu yang lebih cepat dibandingkan dengan proses pembagian yang digunakan pada binary search

Page 23: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

FibonacciSearch

Page 24: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

FibonacciSearch

Page 25: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Interpolation Search

Merupakan pencarian sebuah elemen dalam sebuah array satu dimensi dengan menggunakan rumus interpolasi atau perkiraan secara interpolasiBerlaku rumus interpolasi adalahb/a = q/p

Page 26: SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4. Pointer 5. Linked List 6. Stack (Tumpukan) 7. Queue (Antrian) 8. Tree (Pohon) 9. AVL Tree

Interpolation Search