Oleh : Agus Priyanto, M.Kom Norma Amalia, M.Eng

Slides:



Advertisements
Presentasi serupa
Pencarian ( Searching)
Advertisements

BAB III – ARRAY STATIS II
Introduction to Algorithm evaluation Soal Matrikulasi Buka Buku
Pengurutan Data Nurdiansah PTIK 09 UNM.
Algoritma dan Struktur Data
Searching.
PENGURUTAN (SORTING).
SEARCHING ( PENCARIAN )
Maju Mundur Organisasi Berkas
PENCARIAN (SEARCHING)
PENCARIAN (SEARCHING)
Algoritma & Struktur Data Searching Evangs Mailoa.
Rahmady Liyantanto liyantanto.wordpress.com S1 Teknik Informatika Universitas Trunojoyo Struktur Data.
Chapter 9 SEARCHING ALGORITHM Program Studi Ekstensi DTE FTUI Slides © 2007.
Searching.
Searching Pada suatu data seringkali dibutuhkan pembacaan kembali informasi (retrieval information) dengan cara searching. Searching adalah pencarian data.
Pencarian Data Nurdiansah PTIK 09 UNM.
Algoritma & Struktur Data Linked List Evangs Mailoa.
#include //bagian modul int hitung(x,y) { return(x+y); } //bagian utama main() { int jumlah,a,b; a=8; b=2; jumlah=hitung(a,b); cout
Pertemuan 10 DIVIDE And CONQUER Lanjutan ….
Castaka Agus Sugianto, M.Kom., M.CS
CS1023 Pemrograman Komputer Lecture 20 Array / Tabel [2]
Pertemuan 11 STRUKTUR SEARCHING.
Algoritma dan Pemrograman – Pertemuan 3 & 4 Sorting (Pengurutan)
Algoritma Pencarian (searching)
Algoritma dan Struktur Data
KUG1A3 Algoritma& Pemrograman
ORGANISASI BERKAS SEKUENSIAL
Buatlah flowchart untuk pembagian 3 buah bilangan
Oleh : Agus Priyanto, M.Kom Norma Amalia, M.Eng
Algoritma dan Pemrograman Searching
Bahan Kuliah IF2211 Strategi Algoritma Oleh: Rinaldi Munir
Pencarian pada Array Tim PHKI Modul Dasar Pemrograman
Algoritma dan Struktur Data 1 pertemuan 12
ORGANISASI BERKAS SEKUENSIAL
Struktur data Oleh: Tim Struktur Data IF ARRAY STATIS.
Pertemuan 4 PROGRAMMING LANGUAGE.
Searching.
Algoritma dan Pemrograman Searching
PENGURUTAN (SORTING).
Dasar – dasar Algoritma dan Pemrograman
PENCARIAN INTERPOLASI
“Pengurutan Data”.
STRUKTUR DATA Array Statis.
Algoritma dan Struktur Data
Metode pemecahan masalah
Organisasi Berkas Langsung
Subrutin.
Review Array Sri Nurhayati, MT.
01.3 Hari-1 Sesi-3 Desain Algoritma.
BINARY SEARCH Tim Algoritma Pemrograman Teknik Informatika
SEARCHING (PENCARIAN)
I Gusti Agung Made Wirautama, S.Kom
STRUKTUR DATA Array Statis.
Soal-soal Pengulangan
Algoritma dan Pemrograman Searching
SEARCHING Ada 3 metode pencarian yang akan kita bahas disini:
Review Array Sri Nurhayati, MT.
STUKTUR DATA “Sequential Search and Binary Search”
Algoritma dan Struktur Data
Pencarian (searching)
Algoritma dan Struktur Data
CCM110, MATEMATIKA DISKRIT Pertemuan ke 10, Logika Algoritma
LN New 01 Istilah Struktur Dasar Teknik Puncak-Turun
Algoritma Pemrograman
ORGANISASI BERKAS PRIMER & SEKUNDER
SEARCHING Universitas Dian Nuswantoro Semarang 12/7/2018.
Sorting (Pengurutan).
SEARCHING Ada 3 metode pencarian yang akan kita bahas disini:
SEARCHING ( PENCARIAN )
Transcript presentasi:

Oleh : Agus Priyanto, M.Kom Norma Amalia, M.Eng ALGORITMA SEARCHING Oleh : Agus Priyanto, M.Kom Norma Amalia, M.Eng

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 : Menemukan nomor telepon seseorang pada buku telepon Mencari istilah dalam kamus Contoh implementasi pencarian pada aplikasi komputer : Untuk mendapatkan data dari seseorang mahasiswa (NIM, Nama, IPK) 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 mecoba untuk menemukan sebuah rekaman yang memilki kunci a”

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

Pencarian yang dilakukan terhadap data, dapat dikelompokan sebagai berikut : Pencarian Internal Pencarian yang dilakukan terhadap data yang berada dalam memori komputer 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 : Terdapat sebuah larik yang berisi n buah data ( L[0], L[1], … , L[n-1]) k adalah data yang dicari  L[i]=k

i adalah bilangan indeks terkecil , yang memenuhi kondisi 0 ≤ k ≤ n-1 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 : -1 jika data yang dicari tidak ditemukan dan 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 i  i + 1 AKHIR-JIKA AKHIR ULANG JIKA TIDAK ketemu MAKA posisi  -1 NILAI-BALIK posisi AKHIR-SUBRUTIN L = larik n = jml elemen larik k = data yang dicari

Source code int carilinier (int data [], int n, int k) { int posisi, i, ketemu; if (n <= 0) posisi = -1; else ketemu = 0; i = 0; while ((i < n -1) && ! ketemu) if (data [i] == k) posisi = i; ketemu = 1; } i++; if (!ketemu) return posisi; Source code int main() { int data [8] = {6, 7, 8, 5, 7, 8, 1, 9}; int dicari = 5; cout << "Posisi " <<dicari<< " dalam larik data : " << carilinier(data, 8, dicari)<< "\n"; 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 : Data yang dicari sama dengan elemen terakhir pada bagian pertama dalam larik. Jika kondisi ini terpenuhi, data yang dicari berarti ditemukan. Data yang dicari bernilai kurang dari nilai elemen terakhir pada bagian pertama dalam larik. Pada keadaan ini, pencarian diteruskan pada bagian pertama. 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 ???

Elemen terakhir pada bagian pertama 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)

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

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 L = larik n = jml elemen larik k = data yang dicari 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 ada  BENAR posisi  tengah bawah  atas + 1 // Supaya perulangan berakhir AKHIR-JIKA AKHIR-ULANG JIKA TIDAK ada MAKA posisi  - 1 NILAI-BALIK posisi AKHIR-SUBRUTIN L = larik n = jml elemen larik k = data yang dicari

Source code 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; cout << "Posisi " <<dicari<< " dalam larik data : " << caribiner(data, 11, dicari)<< "\n"; return 0; }

Terimakasih