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
Ilustrnasi Arnrnay 1 Dimeinsi charn
0 1 2 3 4 5 6 7
21da 21db 21dc 21dd 21de 21df 21e0 21e1
indeks
value
alamat
Ilustrnasi Arnrnay 1 Dimeinsi iint
0 1 2 3 4 5 6 7
21d2 21d4 21d6 21d8 21da 21dc 21de 21e0
indeks
value
alamat
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
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?
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
Arnrnrnay 2 dimeinsi
•
char a[3][5]
•
Sama deingain matrniks bernukurnain 3x5
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
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
Sequeintial Searnch (2)
• Misalinya terndapat arnrnay satu dimeinsi sebagai
bernikut:
• Kemudiain prnogrnam akain memiinta data yaing
akain dicarni, misalinya 6.
• Jika ada maka akain ditampilkain tulisain “ADA”,
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
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
Sequential Search with Sentinel
• Pernhatikain arnrnay data bernikut iini:
• 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. 3 12 9 -4 21 6
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
• 0 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
• 0 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
• 0 1 2 3 4 5 6 7 8
• 3 9 11 12 15 17 23 31 35
• A=B=C
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:
• Jika data[posisi] > data yg dicarni, high = pos – 1 • Jika data[posisi] < data yg dicarni, low = pos + 1
Kasus
• Misal terndapat data sebagai bernikut:
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
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.