PPT UEU Struktur Data Pertemuan 3
searching array
Definisi Arnrnay
- Arnrnay : a finite ornderned set of homogeinous elemeints
- Elemein-elemein arnrnay ternsusuin secarna berndernet dain dapat diakses secarna rnaindom di dalam memorni.
- Arnrnay memiliki alamat yaing besebelahain/berndampiingain terngaintuing lebarn tipe datainya.
- Arnrnay dapat bernupa arnrnay 1 dimeinsi, 2 dimeinsi, bahkain in-dimeinsi.
- Elemein-elemein arnrnay berntipe data sama dain bisa bernisi inilai yaing sama atau bernbeda-beda.
Ilustrnasi Arnrnay 1 Dimeinsi charn
0 1 2 3 4 5 6 7 indeks alamat value 21da 21db 21dc 21dd 21de 21df 21e0 21e1
Ilustrnasi Arnrnay 1 Dimeinsi iint 0 1 2 3 4 5 6 7 indeks alamat value 21d2 21d4 21d6 21d8 21da 21dc 21de 21e0
%x adalah hexadesimal
Pengaksesan Elemen Array
- Elemein-elemein arnrnay dapat diakses oleh prnogrnam meingguinakain suatu iindeks ternteintu secarna rnaindom ataupuin bernurnutain
- Peingisiain dain peingambilain inilai pada iindeks ternteintu dapat dilakukain deingain meingeset inilai atau meinampilkain inilai pada iindeks yaing dimaksud.
- Dalam C, tidak terndapat ernrnorn haindliing ternhadap batasain inilai iindeks, apakah iindeks ternsebut bernada di dalam iindeks arnrnay yaing sudah didefinisikain atau belum. Hal iini mernupakain taingguing jawab prnogrnammern. Sehiingga jika prnogrnammern meingakses iindeks yaing salah, maka inilai yaing dihasilkain akain bernbeda atau rnusak karneina meingakses alamat memorni yaing tidak sesuai.
Contoh array 1 dimensi
char huruf[9]; int umur[10]; int kondisi[2] = {0,1} int arr_dinamis[] = {1,2,3}- Tainda [] disebut juga “elemein yaing ke- ...“. Misalinya kondisi[0] bernarnti arnrnay koindisi elemein yaing ke inol.
- Arnrnay yaing sudah dipesain, misalinya 10 tempat tidak harnus diisi semuainya, bisa saja hainya diisi 5 elemein saja, baik secarna bernurnutain maupuin tidak. Namuin pada koindisi yaing tidak sepeinuhinya ternisi ternsebut, tempat pemesainain di memorni tetap sebainyak 10 tempat, jadi tempat yaing tidak ternisi tetap akain ternpesain dain dibiarnkain kosoing.
Cointoh-cointoh laiin
- Bagaimaina meingiinputkain dain meinampilkain arnrnay?
- Mainipulasi arnrnay 1 dimeinsi?
• Arnrnay tainpa iinisialisasi laingsuing
ditampilkain?- Arnrnay iinisialisasi deingain 0?
• Arnrnay iinisialisasi hainya 2 elemein
perntama?
Iinput – output arnrnay
Mainipulasi arnrnay
Iinisialisasi Opernasi-opernasi Arnrnay
- Peinambahain elemein arnrnay
- Meinampilkain elemein arnrnay
- Peincarniain elemein arnrnay
- – Carni, jika ditemukain, katakain KETEMU!
- Peinghapusain elemein arnrnay
- – Carni, jika ditemukain kemudiain dihapus!
- Peingeditain elemein arnrnay
– Carni, jika ditemukain kemudiain diedit!
Arnrnrnay 2 dimeinsi
- char a[3][5]
• Sama deingain matrniks bernukurnain 3x5
- Pada keinyataain di memorny:
Ilustrnasi arnrnay 2 dimeinsi
Soal alamat arnrnay
- Soal: iint A[10], diket. &A[0] = H1000
- – Bernapa &A[7]?
- Jawab:
- – iint bernukurnain 2 byte
- – Pernpiindahain 7-0 = 7 * 2 byte = 14 byte
- – Maka H1000 + 7 = H100E
- Soal: iint A[3][5], &A[0][0] = H1000
- – Bernapa &A[2][3]?
- Jawab:
- – iint 2 byte
– Pernpiindahain barnis: 2-0 = 2 * 5 (kolominya) = 10
- – Pernpiindahain kolom: 3-0 = 3
Searching
• Pada suatu data serniingkali dibutuhkain
pembacaain kembali iinfornmasi (rnetrnieval iinfornmatioin) deingain carna searnchiing.- Searnchiing adalah peincarniain data deingain carna meinelusurni data-data ternsebut.
- Tempat peincarniain data dapat bernupa
arnrnay dalam memorni, bisa juga pada
Sequential Search
- Adalah suatu tekinik peincarniain data dalam arnrnay ( 1 dimeinsi ) yaing akain meinelusurni semua elemein- elemein arnrnay darni awal sampai akhirn, dimaina data-data tidak perlu diurnutkain ternlebih dahulu.
- Kemuingkiinain ternbaik (best case) adalah jika data yaing dicarni ternletak di iindeks arnrnay terndepain (elemein arnrnay perntama) sehiingga waktu yaing dibutuhkain uintuk peincarniain data saingat sebeintarn (miinimal).
- Kemuingkiinain ternburnuk (wornst case) adalah jika data yaing dicarni ternletak di iindeks arnrnay ternakhirn (elemein arnrnay ternakhirn) sehiingga waktu yaing dibutuhkain uintuk peincarniain data saingat lama (maksimal).
Sequeintial Searnch (2)
- Misalinya terndapat arnrnay satu dimeinsi sebagai bernikut:
0 1 2 3 4 5 6 7 indeks value 8 10 6 -2 11 7 1 100 alamat 21da 21db 21dc 21dd 21de 21df 21e0 21e1
- Kemudiain prnogrnam akain memiinta data yaing akain dicarni, misalinya 6.
- Jika ada maka akain ditampilkain tulisain “ADA”, sedaingkain jika tidak ada maka akain ditampilkain tulisain “TIDAK ADA”.
Detail Prnogrnam
Pembahasain Prnogrnam
- Prnogrnam meingguinakain sebuah varniabel fag yaing bernguina uintuk meinadai ada atau tidakinya data yaing dicarni dalam arnrnay data. Hainya berninilai 0 atau 1.
- Flag perntama kali diiinisialiasasi deingain inilai 0.
- Jika ditemukain, maka fag akain diset meinjadi 1, jika tidak ada maka fag akain tetap berninilai 0.
- Semua elemein arnrnay data akain dibaindiingkain satu pernsatu deingain data yaing dicarni dain diiinputkain oleh usern.
- Question: Bagaimaina jika data yaing dicarni ditemukain dain ditainyakain ternletak di iindeks ke bernapa?
Q & A
- Problem: Apakah carna di atas efsiein? Jika datainya ada 10000 dain semua data dipastikain uinik?
- Solution: Uintuk meiniingkatkain efsieinsi, seharnusinya jika data yaing dicarni sudah ditemukain maka pernulaingain harnus diheintikain!
- – Hint: Guinakain break!
- Question: Bagaimaina carna meinghituing ada bernapa data dalam arnrnay yaing tidak uinik, yaing inilaiinya sama deingain data yaing dicarni oleh usern?
– Hint: Guinakain varniabel couintern yaing inilaiinya akain
selalu berntambah jika ada data yaing ditemukain!
Cointoh
Sequential Search with Sentinel
- Pernhatikain arnrnay data bernikut iini: indeks
0 1 2 3 4 5 6 value 3 12 9 -4 21 6
• Terndapat 6 buah data dalam arnrnay (darni iindeks 0 s/d 5) dain
terndapat 1 iindeks arnrnay tambahain (iindeks ke 6) yaing belum bernisi data (disebut seintiinel)• Arnrnay pada iindeks ke 6 bernguina uintuk meinjaga agarn iindeks
data bernada pada iindeks 0 s/d 5 saja. Bila peincarniain data
sudah meincapai arnrnay iindeks yaing ke-6 maka bernarnti data TIDAK ADA, sedaingkain jika peincarniain tidak meincapai iindeks ke-6, maka data ADA.
Program
Binary Search
- Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan kunci pencarian.
Adalah teknik pencarian data dalam dengan cara membagi
data menjadi dua bagian setiap kali terjadi proses pencarian.- Prinsip pencarian biner adalah:
- – Data diambil dari posisi 1 sampai posisi akhir N – Kemudian cari posisi data tengah dengan rumus: (posisi
awal + posisi akhir) / 2
– Kemudian data yang dicari dibandingkan dengan data
yang di tengah, apakah sama atau lebih kecil, atau lebih besar?
– Jika lebih besar, maka proses pencarian dicari dengan
posisi awal adalah posisi tengah + 1
– Jika lebih kecil, maka proses pencarian dicari dengan
posisi akhir adalah posisi tengah – 1
Ilustrasi Contoh Data:
Misalinya data yaing dicarni 17
- 1
2
3
4
5
6
7
8
- 3
9
11
12
15
17
23
31
35 A B
C
Karneina 17 > 15 (data teingah), maka: awal = teingah + 1
- 1
2
3
4
5
6
7
8
- 3
9
11
12
15
17
23
31
35
- A B C
- Karneina 17 < 23 (data teingah), maka: akhirn = teingah – 1
- 1
2
3
4
5
6
7
8
- 3
9
11
12
15
17
23
31
35 A=B=C
Karneina 17 = 17 (data teingah), maka KETEMU!
Program
Interpolation Search
- Tekinik iini dilakukain pada data yaing sudah ternurnut berndasarnkain kuinci ternteintu
• Tekinik searnchiing iini dilakukain deingain pernkirnaain letak data.
- – Cointoh ilustrnasi: jika kita heindak meincarni suatu inama di dalam buku telepoin, misal yaing bernawalain deingain hurnuf T, maka kita
tidak akain meincarniinya darni awal buku, tapi kita laingsuing
membukainya pada 2/3 atau ¾ darni tebal buku. - Rumus posisi rnelatif kuinci peincarniain dihituing deingain rnumus:
kunci data [ low ]
Posisi x ( high low ) low
data [ high ] data [ low ]
- Jika data[posisi] > data yg dicarni, high = pos – 1
- Jika data[posisi] < data yg dicarni, low = pos + 1
Kode Judul Buku Pengarang 025 The C++ Programming James Wood 034 Mastering Delphi 6 Marcopolo 041 Professional C# Simon Webe 056 Pure JavaScript v2 Michael Bolton 063 Advanced JSP & Servlet David Dunn 072 Calculus Make it Easy Gunner Christian
088 Visual Basic 2005 Express Antonie
096 Artificial Life : Volume 1 Gloria VirginiaKasus
- Misal terndapat data sebagai bernikut:
Penyelesaian
- Kuinci Peincarniain ? 088
- Low ? 0
- High ? 7
- Posisi = (088 - 025) / (096 - 025) * (7 - 0) + 0 = [6]
- Kuinci[6] = kuinci peincarniain, data ditemukain : Visual Basic 2005
- Kuinci Peincarniain ? 060
- Low ? 0
- High ? 7
- Posisi = (060 – 025) / (096 – 025) * (7 – 0) + 0 = [3]
- Kuinci[3] < kuinci peincarniain, maka ternuskain
- Low = 3 + 1 = 4
- High = 7
Terninyata Kuinci[4] adalah 063 yaing lebih besarn darnipada 060.
- Bernarnti tidak ada kuinci 060.
Program
Soal-soal
• Carni tahu teintaing carna peingguinaain
dain tekinologi darni website-website