ALGORITMA SEARCHING. Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

dokumen-dokumen yang mirip
LAPORAN PRAKTIKUM SEMENTARA PENGANTAR PEMROGAMAN BAHASA C++

BAB VIII Pencarian(Searching)

Searching [pencarian] Algoritma Pemrograman

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

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

ARRAY / LARIK. Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

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

Algoritma & Pemrograman FUNGSI. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

ALGORITMA PENGURUTAN & PENCARIAN

BAB 3 SEARCHING A. TUJUAN

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

Pengampu : Agus Priyanto, M.KOM

Operasi File. Chapter 13

Pencarian (Searching)

Modul Praktikum Algoritma dan Struktur Data

Algoritme dan Pemrograman

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

MODUL IV PENCARIAN DAN PENGURUTAN

BAB VI SEARCHING (PENCARIAN)

REVIEW ARRAY. Institut Teknologi Sumatera

Materi 5: SEARCHING (PENCARIAN) Dosen:

Kisi-Kisi Ujian Akhir Semester Algoritma dan Pemrograman Lanjut

PERULANGAN Pengampu : Agus Priyanto, M.Kom

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Algoritma & Pemrograman Lanjut FUNGSI. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

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

Lecture Notes Algoritma dan Pemrograman

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

PENCARIAN (SEARCHING)

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

A. TUJUAN PEMBELAJARAN

APLIKASI KAMUS ISTILAH EKONOMI (INGGRIS-INDONESIA) MENGGUNAKAN METODE SEQUENTIAL SEARCHING

Sequential Search (Linear Search)

PERULANGAN Pengampu : Agus Priyanto, M.Kom

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

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Searching ( Pencarian ) Modul III

1 Pencarian. 1.1 Tinjauan Singkat Larik

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

Algoritma dan Pemrograman Searching/Pencarian

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

Struktur Data Linier. Input. Program untuk menyelesaikan masalah. Algoritma Penyelesaian. Proses. Masalah. Struktur Data. Output

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Modul 15 Searching. 1.1 Kompetensi

BAB VII PENCARIAN DATA (SEARCHING)

CCH1A4 / Dasar Algoritma & Pemrogramanan

SATUAN ACARA PERKULIAHAN(SAP)

BAB 2 TINJAUAN PUSTAKA

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

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

Decrease and Conquer

ARRAY. 7 th week Estu Sinduningrum ST,MT

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Algoritme dan Pemrograman

Algoritma dan Pemrograman 2 PENCARIAN

Politeknik Elektronika Negeri Surabaya

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

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

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

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Percabangan. Agus Priyanto, M.Kom

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

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Percabangan. Agus Priyanto, M.Kom

BAB VII ALGORITMA DIVIDE AND CONQUER

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

Perulangan, Percabangan, dan Studi Kasus

Topic Complexity of Hashing Search & Binary Search Tree Algorithm

POHON CARI BINER (Binary Search Tree)

ANALISIS ALGORITMA BINARY SEARCH

BAB 2 LANDASAN TEORI

Algoritma dan Struktur Data

Algoritma dan Struktur data. P e r t e m u a n 3. Array (larik) Tenia Wahyuningrum ST3 Telkom Purwokerto L/O/G/O.

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

SORTING. Brigida Arie Minartiningtyas, M.Kom

Gambar 13.1 Ilustrasi proses algoritma sorting

Kompleksitas Algoritma

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

BAB VI Pengurutan (Sorting)

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

JARINGAN UNTUK MERGING

BAB VI BAHASA C Pendahuluan

UJIAN TENGAH SEMESTER GANJIL TAHUN STMIK AMIKOM YOGYAKARTA

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

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

PERTEMUAN 11 TEHNIK SEARCHING

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Algoritma Pemrograman 2B (Pemrograman C++)

Tes Asisten Praktikum Alpro Lanjut

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

PROSEDUR/SUB RUTIN. Algoritma & Pemrograman. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM

OPERASI SELEKSI PEMROGRAMAN C++

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

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Fungsi : Dasar Fungsi

Transkripsi:

ALGORITMA SEARCHING Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM Smart, Trustworthy, And Teamwork

Tujuan Pembelajaran Setelah mengikuti kuliah ini, mahasiswa dapat memahami berbagai jenis algoritma searching Setelah mengikuti kuliah ini, mahasiswa dapat Setelah mengikuti kuliah ini, mahasiswa dapat mengimplementasikannya algoritma searching dalam kasus nyata

Introduction Pencarian (Searching) merupakan tindakan untuk mendapatkan suatu data dalam kumpulan data Searching adalah proses mendapatkan (retrieve) informasi berdasarkan kunci tertentu dari sejumlah informasi yang telah disimpan

Contoh implementasi pencarian dalam kehidupan sehari-hari : a. Menemukan nomor telepon seseorang pada buku telepon b. Mencari istilah dalam kamus Contoh implementasi pencarian pada aplikasi komputer : a. Untuk mendapatkan data dari seseorang mahasiswa (NIM, Nama, IPK) b. Mencari informasi suatu kata dalam kamus digital

Untuk keperluan mencari data terdapat beragam Algoritma Pencarian (Search Algorithma) Yang dimaksud Algoritma Pencarian adalah "algoritma yang menerima sebuah argumen a dan mencoba untuk menemukan sebuah rekaman yang memilki kunci a

Contoh a. Siapa nama mahasiswa dengan NIM 13102056? single match b. Siapa saja yang mendapat nilai algoritma b. Siapa saja yang mendapat nilai algoritma 85? multiple matches

Pencarian yang dilakukan terhadap data, dapat dikelompokan sebagai berikut : a. Pencarian Internal Pencarian yang dilakukan terhadap data yang berada dalam memori komputer b. Pencarian Eksternal Pencarian yang dilakukan terhadap data yang berada dalam penyimpanan eksternal (hardisk)

Pencarian Sekuensial (Linier) Pencarian Sekuensial (Linier) merupakan model pencarian yang paling sederhana yang dilakukan terhadap kumpulan data Secara konsep, dapat dijelaskan sebagai berikut : a. Terdapat sebuah larik yang berisi n buah data ( L[0], L[1],, L[n-1]) b. k adalah data yang dicari L[i]=k

c. i adalah bilangan indeks terkecil, yang memenuhi kondisi 0 k n-1 d. k adalah data yang dicari L[i]=k Contoh : L [10, 9, 4, 6, 4, 3, 2, 5] Dimanakan posisi 4 yang pertama? Dalam hal ini k adalah 4 dan k ditemukan pada posisi dengan indeks berupa 2

Algoritma Berikut ini merupakan implementasi algoritma pencarian secara sekuensial. Subrutin akan menghasilkan nilai balik berupa : a. -1 jika data yang dicari tidak ditemukan dan b. Bilangan antara 0 sampai dengan n-1 (dengan n adalah jumlah elemen larik) jika data yang dicari ditemukan

Pseudocode SUBRUTIN cari (L, n, k) JIKA n 0 MAKA posisi - 1 SEBALIKNYA ketemu SALAH i 0 ULANG SELAMA (i<n-1) DAN (TIDAK ketemu) JIKA K = L[i] MAKA posisi i ketemu BENAR SEBALIKNYA i i + 1 AKHIR-JIKA AKHIR ULANG JIKA TIDAK ketemu MAKA posisi -1 AKHIR-JIKA AKHIR-JIKA NILAI-BALIK posisi AKHIR-SUBRUTIN L = larik n = jml elemen larik k = data yang dicari

int carilinier (int data [], int n, int k) { int posisi, i, ketemu; if (n <= 0) posisi = -1; else { ketemu = 0; i = 1; while ((i < n -1) &&! ketemu) if (data [i] == k) } { posisi = i; ketemu = 1; } else i++; if (!ketemu) posisi = -1; } return posisi; Source code int main() { int data [8] = {6, 7, 8, 5, 7, 8, 1, 9}; int dicari = 5; printf( Posisi %d dalam larik data : %d\n,dicari, carilinier(data, 8, dicari)); return 0; }

Pencarian Terhadap Data Terurut (Binary) Apabila kumpulan data sudah dalam keadaan terurut, pencarian data dengan menggunakan pencarian sekuensial akan memakan waktu yang lama jika jumlah data dalam kumpulan data tersebut sangat banyak. Untuk mengatasi hal tersebut terdapat algoritma yang dirancang agar pencarian lebih efesien yaitu pencarian biner (Binary Search)

Pencarian biner dilakukan dengan membagi larik menjadi dua bagian dengan jumlah yang sama atau berbeda 1 jika jumlah data semula ganjil Data yang dicari kemudian dibandingkan dengan data terakhir pada bagian pertama

Dalam hal ini akan terjadi 3 kemungkinan yang terjadi : a. Data yang dicari sama dengan elemen terakhir pada bagian pertama dalam larik. Jika kondisi ini terpenuhi, data yang dicari berarti ditemukan. b. Data yang dicari bernilai kurang dari nilai elemen terakhir pada bagian pertama dalam larik. Pada keadaan ini, pencarian diteruskan pada bagian pertama. c. Data yang dicari bernilai lebih dari nilai elemen terakhir pada bagian pertama dalam larik. Pada keadaan ini, pencarian diteruskan pada bagian kedua.

Contoh Perhatikan gambar larik yang telah terurut dibawah ini : 3 5 6 7 9 10 11 12 15 17 20 Carilah : 12???

Mula-mula larik tersebut dipecah menjadi dua bagian seperti berikut 3 5 6 7 9 10 11 12 15 17 20 Bagian 1(Kiri) Bagian 2(Kanan) Elemen terakhir pada bagian pertama

Selanjutnya bilangan yang dicari (yaitu 12) dibandingkan dengan elemen terakhir pada bagian pertama pada larik (yaitu angka 10). Mengingat yang dicari lebih besar dari 10 maka pencarian diteruskan pada bagian kedua (bagian kanan)

11 12 15 17 20 Bagian 1(Kiri) Bagian 2(Kanan) 11 12 15 Bagian 1(Kiri) Bagian 2(Kanan)

Langkah terakhir, angka yang dicari dibandingkan dengan elemen terakhir pada bagian pertama (yaitu angka 12) Melihat nilai yang dicari dan nilai elemen terakhir pada bagian pertama sama maka berarti pencarian telah ditemukan

Pseudocode SUBRUTIN cari_biner (L, n, k) ada SALAH bawah 0 atas n 1 ULANG SELAMA atas bawah tengah (atas + bawah) / 2 // Pembagi Bulat JIKA k >L[tengah] MAKA // Data dicari dikanan bawah tengah + 1 SEBALIKNYA JIKA k >L[tengah] MAKA // Data dicari dikiri atas = tengah 1 SEBALIKNYA ada BENAR posisi tengah bawah atas + 1 // Supaya perulangan berakhir AKHIR-JIKA AKHIR-JIKA AKHIR-ULANG JIKA TIDAK ada MAKA posisi - 1 AKHIR-JIKA NILAI-BALIK posisi AKHIR-SUBRUTIN L = larik n = jml elemen larik k = data yang dicari

int caribiner (int data [], int n, int k) { int ada, atas, bawah, tengah, posisi; ada = 0; bawah = 0; atas = n - 1; while (atas >= bawah) { tengah = (atas + bawah)/2 ; if (k > data [tengah]) } bawah = tengah + 1; else { ada = 1; posisi = tengah; bawah = atas + 1; } } if (!ada) posisi = -1; return posisi; Source code int main() { int data [] = {1, 2, 4, 4, 5, 7, 8, 10, 13, 14, 15}; int dicari = 13; printf( Posisi %d dalam larik data : %d\n,dicari, caribiner(data, 11, dicari)); return 0; }

Terimakasih