Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
KUG1A3 Algoritma& Pemrograman
Burhanuddin D Prodi S1-Sistem Komputer, F Teknik Elektro Universitas Telkom Presentasi Array 2 : Searching
2
KUG1A3 Algoritma & Pemrograman
Topik Bahasan Pemrosesan Sequential Pencarian pada Array Sequential Boolean Sequential tanpa Bolean Sequensial dengan Sentinel KUG1A3 Algoritma & Pemrograman
3
Pemrosesan Sequential
Akses dengan memanfaatkan keterurutan indeks. Elemen pertama adalah elemen tabel dengan indeks terkecil/terbesar, Elemen berikut dicapai melalui suksesor indeks / indeks berikutnya Model akses adalah model akses sekuensial tanpa mark Kondisi berhenti : jika indeks sudah mencapai harga indeks yang terbesar KUG1A3 Algoritma & Pemrograman
4
Skema Pemrosesan Tabel /Array
Inisialisasi i NMin { Elemen pertama} While i ≤ NMax do Proses (Ti) i i + 1 Terminasi Inisialisasi i traversal [NMin..NMax] Proses (Ti) Terminasi KUG1A3 Algoritma & Pemrograman
5
Contoh 1 : Mengisi array dari input
Program IsiTabel { Mengisi array dr input } Kamus constant NMin : integer = 1 constant NMax: integer = 100 i : integer [NMin..NMax] T : array [NMin..NMax] of integer N : integer Algoritma i NMin { Elemen pertama} While i ≤ NMax do input (Ti) i i + 1 KUG1A3 Algoritma & Pemrograman
6
Contoh 2 : Menulis tabel dari indeks terbesar
Program TulisTabel { Menulis array dr indeks terbesar } Kamus constant NMin : integer = 1 constant NMax: integer = 100 i : integer [NMin..NMax] T : array [NMin..NMax] of integer N : integer Algoritma i traversal [NMax..NMin] output (Ti) KUG1A3 Algoritma & Pemrograman
7
KUG1A3 Algoritma & Pemrograman
Latihan I Buat penelusuran dari algoritma berikut i traversal [1..10] TabInti i*10 i traversal [5..1] if i mod 2=0 then TabInti TabInt10-i else TabInti TabInti – i output (TabInti) K 5 Output (TabIntK+5 div TabIntK ) KUG1A3 Algoritma & Pemrograman
8
KUG1A3 Algoritma & Pemrograman
Latihan I Buat penelusuran dari algoritma berikut i traversal [1..10] TabInti i*10 i traversal [5..1] if i mod 2=0 then TabInti TabInt10-i else TabInti TabInti – i output (TabInti) i TabInti i TabInti 1 10 6 60 2 20 7 70 3 30 8 80 4 40 9 90 5 50 10 100 KUG1A3 Algoritma & Pemrograman
9
KUG1A3 Algoritma & Pemrograman
Latihan I Buat penelusuran dari algoritma berikut i traversal [1..10] TabInti i*10 i traversal [5..1] if i mod 2=0 then TabInti TabInt10-i else TabInti TabInti – i output (TabInti) i TabInti i TabInti 1 10 6 60 2 20 7 70 3 30 8 80 4 40 9 90 5 50 10 100 i mod 2 =0 i YTabInti TTabInti 5 50-5=45 T5 4 TabInt6=60 T4 3 30-3=27 T3 2 TabInt8=80 T2 1 10-1=9 T1 KUG1A3 Algoritma & Pemrograman
10
KUG1A3 Algoritma & Pemrograman
Latihan I {i traversal [10..1]} output (TabInti ) K 5 Output (TabIntK+5 div TabIntK ) i TabInti 5 45 4 60 3 27 2 80 1 9 KUG1A3 Algoritma & Pemrograman
11
KUG1A3 Algoritma & Pemrograman
Latihan I i TabInti {i traversal [5..1]} output (TabInti ) K 5 Output (TabIntK+5 div TabIntK ) 5 45 4 60 3 27 2 80 1 9 TabInt10 div TabInt5 = 100 div 45 = 2 Output (2) KUG1A3 Algoritma & Pemrograman
12
KUG1A3 Algoritma & Pemrograman
Latihan II Buat prosedur dengan algoritma untuk mencacah elemen array yang lebih besar dari Datamax ( dari user ). Cacah juga elemen array yang bernilai 10. Hitung nilai rata-rata dari array tersebut. Cari juga nilai maksimal dari array tersebut. Elemen array diasumsikan sudah terisi, dengan domain array dari datamax=25, elemen : 20,10,5,10, 100, 50, 75,10,90,10. KUG1A3 Algoritma & Pemrograman
13
KUG1A3 Algoritma & Pemrograman
Pencarian pada Array Proses mencari suatu nilai yang dilakukan terhadap sekumpulan data pada tabel. Ada beberapa variasi pencarian, dengan kecepatan pencarian yang berbeda. Teknik pencarian yang dibahas : Sequential Search ( dg/tanpa boolean ) Binary Search KUG1A3 Algoritma & Pemrograman
14
KUG1A3 Algoritma & Pemrograman
Sequential Search Metode pencarian yang dilakukan dengan menguji nilai masing-masing elemen satu per satu Pencarian segera dihentikan begitu harga pertama diketemukan, atau tergantung dari kebutuhan Pencarian dilakukan mulai indeks terendah atau tertinggi KUG1A3 Algoritma & Pemrograman
15
Sequential Search – lanj.
Sebuah tabel integer TabInt [1..N]. Tuliskanlah algoritma untuk mencari nilai X dalam TabInt, mulai dari elemen pertama sampai ketemu atau sampai elemen terakhir. Algoritma akan menghasilkan harga indeks IX ketika ditemukan pertama kalinya. IX diberi harga 0 jika pencarian tidak ketemu. Contoh: N = 8, TabInt berisi : { 1, 3, 5, -8, 12, 90, 3, 5} X = 5 Pemeriksaan dilakukan terhadap Output : IX = 3 {1,3,5} KUG1A3 Algoritma & Pemrograman
16
Alg 1 a: Sequential tanpa Boolean
Procedure Seq1a ( Input N,X:integer, Output IX : integer ) { Mencari nilai X pada array TabInt Kamus i : integer [1..NMax] Algoritma i 1 while i< N and TabIntiX do i i + 1 if TabInti = X then IX i else IX 0 TIDAK KETEMU ! KUG1A3 Algoritma & Pemrograman
17
KUG1A3 Algoritma & Pemrograman
Algoritma 1a Elemen tabel yang terakhir diperiksa secara khusus. Jika nilainya sama dengan X, maka IX akan diisi indeks elemen tersebut Jika tidak sama, IX akan diisi nol. Jika IX tidak sama dengan nol, berarti nilaiX ditemukan. Proses pada badan pengulangan hanya untuk “maju” /meneruskan indeks berikut. Pencarian dihentikan karena ketemu, atau karena sudah tidak dapat “maju”. KUG1A3 Algoritma & Pemrograman
18
KUG1A3 Algoritma & Pemrograman
Algoritma 1c Serupa dengan Alg 1a Jika nilainya sama dengan X, nilai variabel Found diisi true. Ini berarti nilai X ditemukan. Tidak memberikan nilai indeks elemen yang ditemukan Pencarian dihentikan karena ketemu, atau karena sudah tidak dapat “maju”. KUG1A3 Algoritma & Pemrograman
19
Alg 1b : Sequential dengan Boolean
Procedure Seq1b ( Input N,X:integer, Output Found : boolean ) { Sama dengan Alg 1a, menghasilkan nilai true pada Found, tetapi indeks tidak diketahui } Kamus i : integer [1..NMax] Algoritma i 1 while i<N and TabIntiX do i i + 1 Found TabInti =X KUG1A3 Algoritma & Pemrograman
20
KUG1A3 Algoritma & Pemrograman
Algoritma 1c Gabungan 1a dan 1b Pengujian elemen array dengan X : Jika nilainya sama, nilai variabel Found diisi true. Ini berarti nilai X ditemukan. Jika tidak, maju /meneruskan indeks berikut. Jika ditemukan : IX akan diisi indeks elemen tersebut Jika tidak, IX akan diisi nol. Pencarian dihentikan karena ketemu, atau karena sudah tidak dapat “maju”. KUG1A3 Algoritma & Pemrograman
21
Alg 1c : Sequential dengan Boolean
Procedure Seq1c ( Input N,X:integer, Output IX : integer, Output Found : boolean ) { Sama dengan Alg 1b, namun indeks diketahui } Kamus i : integer [1..NMax] Algoritma Found false i 1 while i≤N and not Found do if TabInti = X then Found true else i i+1 if Found then IX I IX 0 KUG1A3 Algoritma & Pemrograman
22
Sequential pada Tabel Terurut
Mencari nilai pada array yang sudah terurut Karena terurut, maka pencarian dihentikan jika nilai elemen lebih besar dari nilai yang dicari Contoh N = 8, TabInt berisi : { 1, 3, 5, 8, 12, 90, 311, } X= 5 Pemeriksaan dilakukan terhadap {1,3,5} Output : IX = 3 N = 7, TabInt berisi : { 11, 30, 50, 83,99,123} X = 70 Pemeriksaan dilakukan terhadap {11,30,50,83} Output : IX = 0 KUG1A3 Algoritma & Pemrograman
23
Alg 2 : Sequential dgTabel Terurut
Procedure Seq2 ( Input N,X:integer, Output IX : integer ) Kamus i : integer [1..NMax] Algoritma i 1 while I < N and TabInti<X do i i+1 if TabInti=X then IX i else IX 0 KUG1A3 Algoritma & Pemrograman
24
Sequential Search dengan Sentinel
Sentinel : suatu nilai yang akan menghentikan pengulangan Dipasang suatu elemen fiktif pada tabel yang menjadi sentinel Diletakkan di depan jika pencarian mundur Diletakkan di akhir jika pencarian maju Elemen fiktif ini harganya adalah sama dengan elemen yang dicari. KUG1A3 Algoritma & Pemrograman
25
Sequential Search dengan Sentinel
Jika nilai ditemukan, diperiksa lagi apakah ketemunya : di antara elemen tabel yang sebenarnya Berarti nilai yang dicari ditemukan pada elemen terakhir Berarti tidak ketemu, karena elemen fiktif/sentinel KUG1A3 Algoritma & Pemrograman
26
Alg 3 : Sequential dengan Sentinel
Procedure Seq3 ( Input N,X:integer, Output IX : integer) { Sentinel diletakkan setelah elemen terakhir } Kamus i : integer [1..NMax] Algoritma TabInt(NMax+1) X { Memasang sentinel} i 1 while TabInti X do i i+1 if i < (N+1) then IX i else IX 0 KUG1A3 Algoritma & Pemrograman
27
KUG1A3 Algoritma & Pemrograman
Latihan III Buat program Pascal untuk mencari nilai terbesar dari array TabInt ( integer) yang memiliki indeks kelipatan 3. Cari juga nilai array terbesar yang berkelipatan 3. Array dibaca oleh program. Keluaran adalah hasil-hasil tersebut beserta indeks array terbesar kelipatan 3. KUG1A3 Algoritma & Pemrograman
28
KUG1A3 Algoritma & Pemrograman
Latihan IV Buat program Pascal untuk membaca record Mahasiswa yang terdiri dari nama,nim, kelas. Cari nim terbesar dari array tersebut. KUG1A3 Algoritma & Pemrograman
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.