SEARCHING Ada 3 metode pencarian yang akan kita bahas disini:

Slides:



Advertisements
Presentasi serupa
Pencarian ( Searching)
Advertisements

Introduction to Algorithm evaluation Soal Matrikulasi Buka Buku
ARRAY (Lanjutan).
SEARCHING ( PENCARIAN )
PENCARIAN (SEARCHING)
PENGENALAN c++ DAN STRUKTUR DASAR C++
PEMROGRAMAN SISTEM PERNYATAAN DASAR PILIHAN Pertemuan V
Searching.
Fungsi.
#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
Bab 05 Tipe Data dan Mengisi Variabel
Sort Pertemuan 8.
CS1023 Pemrograman Komputer Lecture 20 Array / Tabel [2]
Bab2 ARRAY (LARIK).
ARRAY / LARIK STRUKTUR DATA Oleh : Yuli Praptomo PHS, S.Kom.
Algoritma Pencarian (searching)
Statement Control (if dan switch)
KUG1C3 Dasar Pemrograman
KUG1A3 Algoritma& Pemrograman
Tugas Kelompok 5 Searching.
KUG1A3 Algoritma& Pemrograman
Oleh : Agus Priyanto, M.Kom Norma Amalia, M.Eng
LANJUTAN DARI SHORTING
Oleh : Agus Priyanto, M.Kom Norma Amalia, M.Eng
Algoritma dan Pemrograman Searching
STRUKTUR DATA MENGGUNAKAN C++ Windha Mega PD, S.Kom
Pencarian pada Array Tim PHKI Modul Dasar Pemrograman
ARRAY (Array Dua Dimensi) Pertemuan 16 Dasar Pemrograman
Searching.
Algoritma dan Pemrograman Searching
STRUKTUR DATA array.
ARRAY.
Struktur Manfaat tipe data struct secara umum adalah untuk menyimpan paket (sekumpulan) data ke dalam satu buah nama variabel saja. Kumpulan data di dalam.
PERNYATAAN DASAR DALAM C++.
POINTER (VAR.PENUNJUK)
Pertemuan 2 ARRAY DIMENSI 1 & 2.
STRUCT OF ARRAY.
Program komputer Sebuah program komputer yang ditulis dengan bahasa apapun dapat dipandang sebagai sebuah himpunan operasi yang dikerjakan pada data-data.
ARRAY Oleh : sgo.
Teknik Informatika - Universitas Muhammadiyah Malang (UMM)
SORTING (PENGURUTAN) Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending.
STRUCT OF ARRAY Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Operator dan Operasi Input Output pada C++ Pertemuan 11
Review Array Sri Nurhayati, MT.
Algoritma dan Struktur Data
SEARCHING (PENCARIAN)
KU-1072 Pengenalan Teknologi Informasi - B
SORTING (PENGURUTAN) Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending.
Array adalah sekumpulan data bertipe sama dengan menggunakan nama yang sama.
Algoritma dan Pemrograman Searching
Queue.
Algoritma dan Struktur Data
Sekolah Tinggi Manajemen Informatika Komputer Bani Saleh
SEARCHING Ada 3 metode pencarian yang akan kita bahas disini:
BAHASA PEMROGRAMAN II DEDED RAMAD KAMDA, S. KOM.
Contoh Aplikasi Array Sorting (Bubble Sort).
Review Array Sri Nurhayati, MT.
array Array merupakan tipe data yang menampung
POINTER (VAR.PENUNJUK)
SORTING (PENGURUTAN) Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending.
STUKTUR DATA “Sequential Search and Binary Search”
Pencarian (searching)
Pertemuan 3 Input/output Statement Assignment Statement
SL-1201 Pengantar Pemrograman
SORTING Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data.
Sorting.
SEARCHING Universitas Dian Nuswantoro Semarang 12/7/2018.
STRUKTUR KONTROL PERCABANGAN DAN STRUKTUR KONTROL LOMPATAN
Algoritma dan Pemrograman 1 C++
SEARCHING ( PENCARIAN )
Transcript presentasi:

SEARCHING Ada 3 metode pencarian yang akan kita bahas disini:   Ada 3 metode pencarian yang akan kita bahas disini: Pencarian Beruntun (Sekuensial Search) Pencarian Beruntun dengan sentinel Pencarian Bagi dua (Binary Search)

(Sekuensial Search) Konsep : membandingkan setiap elemen larik satu per satu secara urut (beruntun), mulai dari elemen pertama sampai dengan elemen yang terakhir. Ada 2 macam pencarian beruntun,yaitu pencarian pada array yang sudah terurut, dan pencarian pada array yang belum terurut.

Algoritma pencarian beruntun 13 16 14 21 76 1 2 3 4 5 6 X = 21 Maka, elemen yang di cek adalah 13, 16, 14, 21 (ditemukan) Berarti data ditemukan pada indeks ke 3 elemen ke 4

Contoh : #include <iostream.h> #include <conio.h> #include <stdio.h> #include <iomanip.h> void main(){ int A[]={12,24,13,25,10,13,21,15,15,18}; int bil; for(int i=0;i<10;i++){ cout<<setw(4)<<A[i];} cout<<endl; cout<<"Angka yang dicari = ";cin>>bil; if(A[i]==bil) cout<<"angka yang dicari berada di indeks ke-"<<i<<endl;} getch();}

Pencarian Beruntun Dengan Sentinel Algoritma ini adalah pengembangan dari algoritma pencarian beruntun. Yang dimaksud dengan sentinel adalah elemen fiktif yang sengaja ditambahkan sesudah elemen terakhir dari larik tersebut. Jadi jika elemen terakhir dari larik adalah L[N], maka sentinel diletakkan pada elemen L[N+1]. Akibatnya proses pencarian akan selalu menemukan data yang dicari, akan tetapi harus selalu diperiksa letak data yang ditemukan, apakah: Di antara elemen-elemen larik yang sesungguhnya(antara L[1] sampai dengan L[N]) Pada elemen fiktif [L[N+1]]

Algoritma pencarian Sentinel 13 16 14 21 76 1 2 3 4 5 6 N = 6 jumlah elemen larik/array semula 1. Misalkan elemen yang dicari adalah X=21 Maka, tambahkan 21 sebagai elemen sentinel di L[N+1]: 13 16 14 21 76 1 2 3 4 5 6 7 Elemen yang diperiksa selama pencarian : 13, 16, 14, 21 Elemen larik yang dikembalikan : 4, karena 4 != N+1, berarti X =21 terdapat di dalam larik semula.

2. Misalkan elemen yang dicari adalah X=13 Maka, tambahkan 13 sebagai elemen sentinel di L[N+1]: 13 16 14 21 76 1 2 3 4 5 6 7 Elemen yang diperiksa selama pencarian : 13 Elemen larik yang dikembalikan : 1, karena 1 != N+1, berarti X = 13 terdapat di dalam larik semula. 3. Misalkan elemen yang dicari adalah X=15 Maka, tambahkan 15 sebagai elemen sentinel di L[N+1]: 13 16 14 21 76 15 1 2 3 4 5 6 7 Elemen yang diperiksa selama pencarian : 13,16,14,21,76,21,15 Elemen larik yang dikembalikan : 7, ditemukan sebagai elemen sentinel. Karena 7 = N+1, berarti X=15 tidak terdapat di dalam larik semula.

Contoh : # include <iostream.h> # include <conio.h> # include <stdio.h> # include <math.h> void main(){ int array[]={1,2,3,4,5}, i=0,x; cout<<"masukkan data yang akan dicari "; cin>>x; array[5]=x; i=0; while(array[i]!=x) i++; if (i<5) { cout<<"Data Ketemu“; } else cout<<"data tidak ditemukan"; getch();}

Pencarian Bagi Dua (Binary Search) Syarat : Data harus terurut Salah satu keuntungan data yang terurut adalah memudahkan pencarian, yang dalam hal ini adalah pencarian bagi dua. Sebenarnya dalam kehidupan sehari-hari kita sering menerapkan algoritma ini. Untuk mencari kata tertentu dalam kamus (misalnya kamus bahasa Inggris), kita tidak membuka kamus tersebut dari halaman awal sampai halaman akhir satu persatu, namun kita mencarinya dengan cara membelah atau membagi halaman-halaman buku tersebut. Begitu seterusnya sampai kita menemukan kata yang dicari.

Algoritma pencarian bagidua 81 76 21 18 16 13 10 7 Ia=1 2 3 4 5 6 8=ib Misal elemen yang dicari adalah X = 18 langkah 1: ia=1 dan ib=8 elemen tengah K=(1+8)/2 = 4 (diarsir) kiri kanan Langkah 2: L[4]=18? Ya! (X ditemukan, pencarian dihentikan) 81 76 21 18 16 13 10 7 1 2 3 4 5 6 8

kiri kanan Misal elemen yang dicari adalah X = 16 langkah 1: ia=1 dan ib=8 elemen tengah K=(1+8)/2 = 4 (diarsir) kiri kanan Langkah 2: L[4]=16? Tidak ! harus diputuskan apakan pencarian akan dilakukan di bagian kiri atau kanan dengan pemeriksaan sbb: L[4] > 16 ? Ya ! Lakukan pencarian pada larik bagian kanan dengan ia=k+1 = 5 dan ib = 8 (tetap) 81 76 21 18 16 13 10 7 1 2 3 4 5 6 8

elemen tengah K = (5+8)/2 = 6 (diarsir) 16 13 10 7 5 6 8 Langkah 2.1: ia = 5 dan ib = 8 elemen tengah K = (5+8)/2 = 6 (diarsir) 16 13 10 7 5 6 8 Kiri kanan Langkah 2.2: L[6] = 16? Tidak ! harus diputuskan apakan pencarian akan dilakukan di bagian kiri atau kanan dengan pemeriksaan sbb: L[6] > 16 ? Tidak ! Lakukan pencarian pada larik bagian kiri dengan ia= 5 dan ib = k-1 = 5

elemen tengah K = (5+5)/2 = 5 (diarsir) 16 5 Langkah 2.1.1: ia = 5 dan ib = 5 elemen tengah K = (5+5)/2 = 5 (diarsir) 16 5 Langkah 2.1.2: L[5] = 16? Ya ! (X ditemukan,pencarian dihentikan)

Misal elemen yang dicari adalah X = 100 langkah 1: ia=1 dan ib=8 elemen tengah K=(1+8)/2 = 4 (diarsir) kiri kanan Langkah 2: L[4]=100? Tidak ! harus diputuskan apakan pencarian akan dilakukan di bagian kiri atau kanan dengan pemeriksaan sbb: L[4] > 100 ? Tidak ! Lakukan pencarian pada larik bagian kiri dengan ia=1 dan ib = K-1 = 3 81 76 21 18 16 13 10 7 1 2 3 4 5 6 8

elemen tengah K = (1+3)/2 = 2 (diarsir) 81 76 21 Ia=1 2 3=ib Langkah 1: ia = 1 dan ib = 3 elemen tengah K = (1+3)/2 = 2 (diarsir) 81 76 21 Ia=1 2 3=ib Kiri kanan Langkah 2: L[2]=100? Tidak ! harus diputuskan apakan pencarian akan dilakukan di bagian kiri atau kanan dengan pemeriksaan sbb: L[2] > 100 ? Tidak ! Lakukan pencarian pada larik bagian kiri dengan ia=1 dan ib = K-1 = 1 81 1

elemen tengah K = (1+1)/2 = 1 (diarsir) Langkah 1.1: ia = 1 dan ib = 1 elemen tengah K = (1+1)/2 = 1 (diarsir) 81 1 Langkah 1.2: L[1]=100? Tidak ! harus diputuskan apakan pencarian akan dilakukan di bagian kiri atau kanan dengan pemeriksaan sbb: L[1] > 100 ? Tidak ! Lakukan pencarian pada larik bagian kiri dengan ia=1 dan ib = K-1 = 0 Karena ia > ib, maka tidak ada lagi bagian larik yang tersisa. Dengan demikian, X tidak ditemukan di dalam larik maka pencarian dihentikan.

Contoh : #include <iostream> #include <conio> int main() { const int arraySize = 5; int target; // Array size and values already known. int array[arraySize] = {1, 2, 3, 4, 5}; int first, mid, last; cout << "Enter a target to be found: "; cin >> target; // Initialize first and last variables. first = 0; last = 2;

while(first <= last) { mid = (first + last)/2; if(target > array[mid]) { first = mid + 1; } else if(target < array[mid]) { last = mid + 1; } else { first = last + 1; } } if(target == array[mid]) { cout << "Target found." << endl; } Else { cout << "Target not found." << endl; } getch(); }

Selesai….