SD C 13 - · PDF fileMateri 1. Data dan Struktur Data 2. Array 3. Struktur dan Record 4....

Preview:

Citation preview

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