inf202: struktur data pencarian...
TRANSCRIPT
![Page 1: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/1.jpg)
Pertemuan 7:
INF202: Struktur Data
Pencarian (Searching)
Dosen: Wayan Suparta, PhD
![Page 2: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/2.jpg)
2
Searching
• Adalah proses mendapatkan (retrieve) information berdasarkan kunci (key) tertentu dari sejumlah informasi yang telah disimpan
• Kunci (key) digunakan untuk melakukan pencarian record yang diinginkan didalam suatu list
![Page 3: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/3.jpg)
Searching
Single match
Multiple match
Siapa mahasiswa dengan Nim
0800123456
Siapa saja yang mendapat nilai
Algoritma >= 85
![Page 4: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/4.jpg)
Metode Searching
• Sequential Search
• Binary Search
![Page 5: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/5.jpg)
5
Sequential Search
• Merupakan teknik yang sederhana dan
langsung dapat digunakan pada struktur data
baik array maupun linked-list.
• Pencarian data secara urut mulai dari data
pertama sampai kunci yang dicari ditemukan
atau sampai seluruh data telah dicari dan tidak
ditemukan
• Dilakukan pada data yang tidak terurut.
![Page 6: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/6.jpg)
(1) Sequential Search
• Disebut juga linear search atau Metode
pencarian beruntun.
• Tidak efisien untuk data yang list yang besar
• Adalah suatu teknik pencarian data yang akan
menelusuri tiap elemen satu per-satu dari awal
sampai akhir.
• Data awal = tidak harus dalam kondisi terurut.
![Page 7: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/7.jpg)
Algoritma Sequential Search
1. Input x (data yang dicari)
2. Bandingkan x dengan data ke-i sampai n
3. Jika ada data yang sama dengan x maka cetak
pesan “Ada”
4. Jika tidak ada data yang sama dengan x cetak
pesan “tidak ada”
![Page 8: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/8.jpg)
Ilustrasi Sequential Search • Misalnya terdapat array satu dimensi sebagai berikut:
• Kemudian program akan meminta data yang akan dicari, misalnya 6 (x = 6).
• Iterasi :
6 = 8 (tidak!)
6 = 10 (tidak!)
6 = 6 (Ya!) => output : “Ada” pada index ke-2
• Jika sampai data terakhir tidak ditemukan data yang sama maka output : “ data yang dicari tidak ada”.
8 10 6 -2 11 7 1 100
0 1 2 3 4 5 6 7 indeks
value
![Page 9: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/9.jpg)
Best & Worst Case
• Best case : jika data yang dicari terletak di depan sehingga waktu yang dibutuhkan minimal.
• Worst case : jika data yang dicari terletak di akhir sehingga waktu yang dibutuhkan maksimal.
• Contoh : DATA = 5 6 9 2 8 1 7 4 bestcase ketika x = 5 worstcase ketika x = 4 *x = key/data yang dicari
![Page 10: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/10.jpg)
Contoh Sequential Search (1)
Nim Nama IPK
[0] 2207023006 Mulyadi 2.94
[1] 2207023004 Willy Johan 3.15
[2] 2207023003 Anthony Liberty 2.78
[3] 2207023007 Ferry Santoso 3.37
[4] 2207023005 Jaya Mulya 2.93
[5] 2207023001 Budi Santoso 3.01
[6] 2207023008 Indra Gunawan 3.56
[7] 2207023002 M. Rudito W 3.44
![Page 11: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/11.jpg)
Contoh Sequential Search (2)
Kunci pencarian? 2207023007
NIM[0] == kunci? tidak
NIM[1] == kunci? tidak
NIM[2] == kunci? tidak
NIM[3] == kunci? ya Ferry
Santoso, 3.37
![Page 12: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/12.jpg)
12
Contoh Sequential Search (3)
Kunci pencarian? 2207023010
NIM[0] == kunci? tidak
NIM[1] == kunci? tidak
NIM[2] == kunci? tidak
NIM[3] == kunci? tidak
NIM[4] == kunci? tidak
NIM[5] == kunci? tidak
NIM[6] == kunci? tidak
NIM[7] == kunci? tidak
Semua data telah di cari, kunci tidak ditemukan
![Page 13: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/13.jpg)
Binary Search (1)
• Pencarian data dimulai dari pertengahan data yang telah terurut
• Jika kunci pencarian lebih kecil daripada kunci posisi tengah, maka kurangi lingkup pencarian pada separuh data pertama
• Begitu juga sebaliknya jika kunci pencarian lebih besar daripada kunci tengah, maka pencarian ke separuh data kedua
• Teknik Binary Search hanya dapat digunakan pada sorted array, yaitu array yang elemen-elemennya telah terurut.
![Page 14: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/14.jpg)
Binary Search (2)
• Lebih cepat dari sequential search
• Teknik pencarian = data dibagi menjadi dua
bagian untuk setiap kali proses pencarian.
• Data awal harus dalam kondisi terurut.
Sehingga harus dilakukan proses sorting
terlebih dahulu untuk data awal.
• Mencari posisi tengah :
Posisi tengah = (posisi awal + Posisi tengah = (posisi awal +
posisi akhir) / 2
![Page 15: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/15.jpg)
Algoritma Binary Search
1. Data diambil dari posisi awal 1 dan posisi akhir N
2. Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2
3. Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar?
4. Jika data sama, berarti ketemu.
5. Jika lebih besar, maka ulangi langkah 2 dengan posisi awal adalah posisi tengah + 1
6. Jika lebih kecil, maka ulangi langkah 2 dengan posisi akhir adalah posisi tengah – 1
![Page 16: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/16.jpg)
N: banyak record array x
1. kiri = 0 dan kanan = N-1
2. tengah = (kiri+kanan)/2
3. jika x[tengah]=kunci maka indeks = tengah. Selesai
4. jika x[tengah]<kunci maka kiri = tengah+1
5. jika x[tengah]>kunci maka kanan = tengah-1
6. jika kiri<kanan dan x[tengah]<>kunci
maka ulangi mulai dari 2
7. jika x[tengah]<>kunci maka indeks=-1
8. selesai
Algoritma Binary Search
![Page 17: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/17.jpg)
Ilustrasi
Contoh Data: Misalnya data yang dicari 23 (X = 23) Iterasi 1 0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35 A B C
Karena 23 > 15 (data tengah), maka: awal = tengah + 1 Iterasi 2 0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35 A B C
X = B (sama dengan data tengah). Output = “Data ditemukan”
![Page 18: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/18.jpg)
Best & Worst CaseBest & Worst Case
• Best case : jika data yang dicari terletak di posisi tengah.
• Worst case : jika data yang dicari tidak ditemukan.
• Contoh :
DATA = 5 6 9 2 8 1 7 4 3
bestcase ketika x = 8 (T(n)=1)
worstcase ketika x = 25 (T(n) = 5 atau n/2)
*x = key/data yang dicari
![Page 19: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/19.jpg)
Contoh Binary SearchContoh Binary Search
Nim Nama IPK
[0] 2207023010 Mulyadi 2.94
[1] 2207023020 Willy Johan 3.15
[2] 2207023030 Anthony Liberty 2.78
[3] 2207023040 Ferry Santoso 3.37
[4] 2207023050 Jaya Mulya 2.93
[5] 2207023060 Budi Santoso 3.01
[6] 2207023070 Indra Gunawan 3.56
[7] 2207023080 M. Rudito W 3.44
![Page 20: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/20.jpg)
20
Contoh Binary SearchContoh Binary Search
Kunci pencarian? 2207023060
[0] 2207023010 [1] 2207023020 [2] 2207023030 [3] 2207023040 [4] 2207023050 [5] 2207023060 [6] 2207023070 [7] 2207023080
Lo
Hi
Mid
Lo
Hi
Mid
Ditemukan pada indeks [5] Budi Santoso 3.01
![Page 21: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/21.jpg)
ContohContoh Binary SearchBinary Search
Kunci pencarian? 2207023022
[0] 2207023010
[1] 2207023020
[2] 2207023030
[3] 2207023040
[4] 2207023050
[5] 2207023060
[6] 2207023070
[7] 2207023080
Lo
Hi
Mid
Lo
Hi
Mid
NIM 2207023022 tidak ada pada data
Lo, Hi, Mid
Hi, Mid
Lo
![Page 22: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/22.jpg)
Contoh program #1 (Sequential): #include <conio.h>
#include <iostream>
using namespace std;
main(){
int c,i,posisi;
int
A[20]={3,2,4,10,20,1,5,8,7,9,6,5,
11,12,14,13,16,15,17,19};
cout<<"Data : ";
for(i=0;i<20;i++){
cout<<A[i]<<" ";
}
cout<<"\nData yang ingin dicari
: ";
cin>>c;
i=0;
posisi=0;
while(i<19 && A[i]!=c){
i++;
}
if (A[i]!=c){
cout<<"Maaf data yang dicari
tidak ada";
}else if(posisi=i+1)
cout<<"ditemukan pada posisi
ke "<<posisi;
getch();
}
![Page 23: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/23.jpg)
Contoh program #2 (Binary): #include <iostream>
#include <conio.h>
using namespace std;
int main(){
const int Ar[10] = {1,2,3,4,5,6,7,8,9,10}; // untuk proses ascending
int tar;
cout<<"masukan data yang dicari : "; cin>>tar; int awal=0, akhir=10, tengah;
while (awal <= akhir)
{ tengah = (awal + akhir)/2;
if (tar > Ar[tengah] ) // descending ubah tanda > menjadi <
{ awal = tengah + 1; }
else if (tar < Ar[tengah]) // descending ubah tanda < menjadi >
{akhir= tengah - 1;}
else {awal = akhir +1; }
}
if (tar == Ar[tengah])
{cout<<" Data ditemukan, Ke- "<<tengah+1<<endl;
}
else { cout<<"target tidak ditemukan "<<endl; }
getch();
}
![Page 24: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/24.jpg)
LATIHAN 14 1. Diketahui array data:
{12,2,84,1,5,65,7,45,8,4,3,6,8,7,4,1,5,45,99,65,78,21,12,36,4
5}
Buatlah program pencarian dengan output:
2. Buatlah program yang dapat mencari data dalam array 3 x 2
dimensi.
![Page 25: INF202: Struktur Data Pencarian (Searchingocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data...5 Sequential Search •Merupakan teknik yang sederhana dan langsung dapat digunakan](https://reader034.vdocuments.net/reader034/viewer/2022052119/5cc8358b88c993f00b8d2d63/html5/thumbnails/25.jpg)
3. Buatlah program yang dapat mencari data dengan output;