STRUKTUR DATA
By : Sri Rezeki Candra Nursari
2 SKS
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
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
SEARCH
Pertemuan 14
2 SKS
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
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
Sequential Search
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
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
SequentialSearch
Output Sequential
Search
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.
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
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
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
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
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
BinarySearch
BinarySearch
BinarySearch
BinarySearch
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
FibonacciSearch
FibonacciSearch
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
Interpolation Search