Algoritma dan Pemrograman Searching/Pencarian

dokumen-dokumen yang mirip
DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Searching [pencarian] Algoritma Pemrograman

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

BAB VI SEARCHING (PENCARIAN)

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

ALGORITMA PENGURUTAN & PENCARIAN

BAB VII ALGORITMA DIVIDE AND CONQUER

ALGORITMA & PEMROGRAMAN

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

CCH1A4 / Dasar Algoritma & Pemrogramanan

SORTING. Brigida Arie Minartiningtyas, M.Kom

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

Linked List. Bandung 2013

*** SELAMAT MENGERJAKAN

STRATEGI DIVIDE AND CONQUER

Kompleksitas Algoritma (1)

Pengurutan (Sorting) Algoritma Pemrograman

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Algoritma dan Pemrograman 2 PENGURUTAN

Algoritma Searching Tenia wahyuningrum, S.Kom. MT dan Sisilia Thya Safitri, MT

Kompleksitas Algoritma

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

Algoritme dan Pemrograman

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Algoritma dan Pemrograman 2 PENCARIAN

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Kompleksitas Algoritma

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

BAB VIII Pencarian(Searching)

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

Pertemuan XII ALGORITMA. Algoritma & Pemrograman Ken Kinanti P 1. {Pencarian Beruntun / Sequential Search}

Algoritma dan Pemrograman Array

MODUL IV PENCARIAN DAN PENGURUTAN

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Searching. Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

BAB 3 SEARCHING A. TUJUAN

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

LATIHAN UTS Tim Pengajar KU1071 Sem

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Algoritma Brute Force

BAB 2 LANDASAN TEORI

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Algoritma dan Pemrograman Array/Tabel[2] Oleh: Eddy Prasetyo N

LAPORAN AKHIR PRAKTIKUM STRUKTUR DATA

Modul Praktikum Algoritma dan Struktur Data

Selamat Mengerjakan. 2. Keluaran dari baris 10 adalah? a. 1 b. 4 c. 2.5 d. 2 e Keluaran dari baris 11 adalah? a. 1 b. 4 c. 2.5 d. 2 e.

Materi 5: SEARCHING (PENCARIAN) Dosen:

Bubble Sort (Pengurutan Gelembung / Pemberatan)

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

1 Pencarian. 1.1 Tinjauan Singkat Larik

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-6 Pencarian (Searching) 1

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

ANALISIS ALGORITMA BINARY SEARCH

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

BAB VII PENCARIAN DATA (SEARCHING)

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

QUEUE (ANTRIAN) Struktur Data - Queue

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

BAB XI Manipulasi Binary Tree

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

BAB 8 SORTING DAN SEARCHING

Meizano Ardhi M., S.T.

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

SORTING (PENGURUTAN DATA)

7. SORTING DAN SEARCHING

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

LOGO STRUKTUR DATA QUEUE

Array. Teknik Informatika Politeknik Negeri Batam

Pencarian (Searching)

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

REVIEW ARRAY. Institut Teknologi Sumatera

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

LIST LINIER 1. DEFINISI

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Modul 15 Searching. 1.1 Kompetensi

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Pengertian Algoritma Pengurutan

A. TUJUAN PEMBELAJARAN

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

LAPORAN PRAKTIKUM SEMENTARA PENGANTAR PEMROGAMAN BAHASA C++

Transkripsi:

Adam Mukharil Bachtiar Informatics Engineering 2011 Algoritma dan Pemrograman Searching/Pencarian

Materi Definisi Pencarian Pencarian Sekuensial Pencarian Biner

Definisi Pencarian All About Searching

Definisi Pencarian Proses yang melakukan pencarian nilai dalam sekumpulan data. Proses ini akan menghasilkan status DITEMUKAN atau TIDAK DITEMUKAN.

Algoritma Pencarian Pencarian Sekuensial/Pencarian Linear (Sequential search / Linear search) Pencarian Biner (Binary search)

Pencarian Sekuensial Definition and Structures of Sequential Search

Pencarian Sekuensial Telusuri kelompok data satu per satu. Awali process dari data pertama. Jika data ditemukan maka pencarian berhenti, tetapi jika tidak, pencarian diteruskan sampai data terakhir

Metode Pencarian Sekuensial Tanpa boolean Tanpa sentinel Menggunakan sentinel Menggunakan boolean

Ilustrasi Pencarian Sekuensial Tanpa Sentinel Array yang akan diproses: Data 5 1 9 4 2 [1] [2] [3] [4] [5] Data yang dicari : 9 Data[1] = 9? Data[2] = 9? Data[3] = 9? i i + 1 i i + 1 i (AKHIRI PENCARIAN) Hasil: 9 ditemukan di Data[3]

Pencarian sekuensial tanpa sentinel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Procedure SeqSearchTanpaSentinel (Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan hasil pencarian (ditemukan/tidak)} Kamus: i : integer data_cari : tipedata Algoritma: input(data_cari) i 1 while(nama_array [i] data_cari) and (i < maks_array) do i i + 1 endwhile if (nama_array[i] = data_cari) then output(data_cari, ditemukan pada indeks ke-,i) else output(data_cari, tidak ditemukan ) endif EndProcedure

Pencarian sekuensial dengan sentinel Sentinel adalah index tambahan yang ditempatkan pada index maks array + 1. Dengan demikian, data yang dicari pasti akan ditemukan. Tempatkan data yang dicari di sentinel. Jika data ditemukan di sentinel berarti data tidak ditemukan, dan jika data ditemukan bukan di sentinel berarti data ditemukan.

Ilustrasi pencarian dengan sentinel Data yang dicari : 9 sentinel Data 5 1 9 4 2 9 [1] [2] [3] [4] [5] [6] Hasil: Data yang dicari temukan di Data[3] Data yang dicari : 10 sentinel Data 5 1 9 4 2 10 [1] [2] [3] [4] [5] [6] Hasil: Data yang dicari temukan di indeks ke-6 (sentinel). Kesimpulannya adalah data tidak ditemukan.

Pencarian sekuensial dengan sentinel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Procedure SeqSearchSentinel (Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan hasil pencarian (ditemukan/tidak)} Kamus: i : integer data_cari : tipedata Algoritma: input(data_cari) i 1 nama_array(maks_array + 1) data_cari while (nama_array [i] data_cari) do i i + 1 endwhile if (i < maks_array+1) then output(data_cari, ditemukan pada indeks ke-,i) else output(data_cari, tidak ditemukan ) endif EndProcedure

Pencarian sekuensial menggunakan boolean Proses pencariannya mirip dengan pencarian sekuensial Melibatkan variable boolean.

Ilustrasi pencarian sekuensial menggunakan variable boolean Array yang akan dicek: Data 5 1 9 4 2 [1] [2] [3] [4] [5] Data yang dicari : 9 Data[1] = 9? Data[2] = 9? Data[3] = 9? Ditemukan FALSE Ditemukan FALSE Ditemukan TRUE (STOP PENCARIAN) Hasil: 9 ditemukan di Data[3]

Pencarian sekuensial menggunakan boolean 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Procedure SeqSearchBoolean (Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer ketemu : boolean data_cari : tipedata Algoritma: input(data_cari) i 1 ketemu false while (not ketemu) and (i maks_array) do if(nama_var_array(i) = data_cari) then ketemu true else i i + 1 endif endwhile if (ketemu) then output(data_cari, ditemukan pada indeks ke-,i) else output(data_cari, tidak ditemukan ) endif EndProcedure

Pencarian Biner

Pencarian Biner Algoritma pencarian yang membagi data menjadi dua bagian (kiri dan kanan). Dengan syarat data telah terurut. Langkahnya : 1. Cek data yang ada di tengah (index awal + index akhir) div 2 2. Jika data yang di tengah merupakan data yang dicari, maka pencarian berakhir. Posisi tengah adalah posisi dari data yang dicari. 3. Jika data yang di tengah bukan merupakan data yang dicari, maka : Jika data yang di tengah lebih kecil dari yang dicari, maka index awal data adalah posisi tengah +1 Jika data yang di tengah lebih besar dari yang dicari, maka index akhir data adalah posisi tengah -1 4. Ulangi dari langkah 1 sampai 3 sampai data di tengah merupakan data yang dicari atau posisi index awal sudah lebih besar dari index akhir.

Contoh Kasus Pencarian Biner Data yang dicari : 7 Data 3 7 12 15 29 [1] [2] [3] [4] [5] Hasil:?

Contoh Kasus Langkah 1 : Bagi array menjadi 2 bagian. Hitung posisi tengah (k) dari array untuk memulai pencarian k = (Ia + Ib) div 2 = (1 + 5) div 2 = 3 la : index bawah (untuk index) lb : index atas (untuk index) Ia : Index atas Ib : Index bawah 3 7 12 15 29 [1] [2] [3] [4] [5] Ia k Ib Sisi Kiri Sisi Kanan

Contoh Kasus Pencarian Biner Langkah 2 : Periksa data di posisi k. Jika datanya sama dengan yang dicari, maka perulangan berhenti dan data ditemukan. Jika data tidak ditemukan di posisi k, maka Jika data di posisi k lebih kecil dari yang dicari, maka lanjutkan pencarian di sebelah kanan dengan cara mengganti Ia menjadi k+1 Jika data di posisi k lebih besar dari yang dicari, maka lanjutkan pencarian di sebelah kiri dengan cara mengganti Ib menjadi k-1 3 7 1 2 Ia Ib

Contoh Kasus Pencarian Biner 3 7 1 2 Ia Ib k Sisi Kiri Sisi Kanan Langkah 3 : ulangi langkah 1 dan langkah 2 sampai data ditemukan atau la>lb. Hasil : 7 ditemukan di Data[2] pada perulangan ke-3.

Binary Search 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Procedure BinarySearch (Input nama_array : tipe_array) {I.S. : elemen array yang terurut secara ascending sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: Ia, Ib, k : integer ketemu : boolean data_cari : tipedata Algoritma: input(data_cari) Ia 1 Ib maks_array ketemu false while (not ketemu) and (Ia Ib) do k (Ia + Ib) div 2 if (nama_var_array[k] = data_cari) then ketemu true else if (nama_var_array[k] < data_cari) then Ia k + 1 else Ib k 1 endif endif endwhile

Binary Search 27 28 29 30 31 32 33 if (ketemu) then output(data_cari, ditemukan pada indeks ke-,k) else output(data_cari, tidak ditemukan ) endif EndProcedure