algoritma
TRANSCRIPT
![Page 1: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/1.jpg)
ALGORITMA PENCARIAN (SEARCH
ALGORITHM)
A L GO R I T M A PE N C A R I A N A D A L A H
A L GO R I T M A U N T U K M E N C A R I I TE M
D E N G A N SI FAT D A N N I L A I YA N G
DI T E N T U K A N PA D A SU AT U K U M P U L A N
D A R I I TEM .
![Page 2: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/2.jpg)
METODE PENCARIAN (SEARCH METHODS)
LINEAR SEARCH Sering dikenal dengan “pencarian berurutan” / “sequential searching”
Metode pencarian yang paling sederhana, pencarian dalam kumpulan data yang
masih acak.
BINARY SEARCH atau “pencarian interval sebagian” / “half-interval searching”
Metode pencarian dalam kumpulan data yang telah diurutkan (tidak acak).
![Page 3: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/3.jpg)
LINEAR SEARCH
PR I N S I P D A N M ETOD E Data yang ada dibandingkan satu per satu secara
berurutan dengan data yang dicari.
Pada saat data yang dicari ditemukan, maka proses
pencarian selesai.
Jika belum ditemukan, maka pencarian diteruskan
sampai seluruh data dibandingkan.
C ON TOHDiketahui : nilai_dicari = 5
var_array = [10, 8, 15, 9, 5, 6, 2, 3]
Pertanyaan : Dimanakah posisi 5 pada var_array ?
![Page 4: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/4.jpg)
LINEAR SEARCH
10 8 15 9 5 6 2 3
Apakah var_array[indeks] == nilai_dicari …..?
0 1 2 3 4 5 6 7
indek
s
Start
End
Tidak
Ya Posisi 5 =
4
![Page 5: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/5.jpg)
LINEAR SEARCH
5
10
8
15
9
5
6
2
3
0
1
2
3
4
5
6
7
ind
ek
s
Nilai yang
dicari
Ditemukan
nilai
5
di posisi ke-
![Page 6: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/6.jpg)
LINEAR SEARCH : CONTOH <LINEAR_CARIPOSISI.CPP>
# I N C L U D E < I O S T R E A M . H >
# I N C L U D E < C O N I O . H >
I N T C A R I ( I N T D A T A [ ] , I N T
N , I N T N I L A I )
{
I N T P O S , I ;
P O S = - 1 ;
I = 0 ;
W H I L E ( I < N - 1 )
{
I F ( D A T A [ I ] = = N I L A I )
{
P O S = I ;
B R E A K ;
}
I + + ;
}
void main()
{
int data_array[8] = {10,8,15,9,5,6,2,3} ;
int nilai_dicari = 5 ;
int posisi ;
posisi = cari(data_array, 8, nilai_dicari);
if(posisi == -1)
cout <<"Nilai " <<nilai_dicari
<<" tidak ditemukan" ;
else
cout <<"Nilai " <<nilai_dicari
<<" ada di posisi ke-" <<posisi ;
getch();
}
Page
1
Page
2
![Page 7: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/7.jpg)
BINARY SEARCH
PR I N S I P D A N M ETOD E1. Data dibagi menjadi 2 bagian (dengan jumlah yang sama
atau berbeda 1, jika jumlah semua datanya ganjil).
2. Pencarian selalu dimulai pada bagian pertama.
3. Data yang dicari dibandingkan dengan elemen
terakhir pada bagian pertama.
Ada 3 kemungkinan : Data yang dicari == elemen terakhir, maka data telah
ditemukan
Data yang dicari < elemen terakhir, maka pencarian
diteruskan pada bagian pertama (dengan cara membuat bagian
pertama menjadi 2 bagian lagi, dan langkah selanjutnya sama seperti mengulangi
langkah no 3)
Data yang dicari > elemen terakhir, maka pencarian
diteruskan pada bagian kedua (selanjutnya sama seperti mengulangi
langkah no 3, hanya saja dimulai pada bagian kedua)
![Page 8: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/8.jpg)
BINARY SEARCH
C ON TOHDiketahui : nilai_dicari = 5
data = [3, 5, 7, 9, 10, 11, 15, 18, 20]
Pertanyaan : Dimanakah posisi 5 pada data ?
![Page 9: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/9.jpg)
5 =
5
BINARY SEARCH
3 5 7 9 10 11 15 18 20
11 15 18 203 5 7 9 10
5
3 5 7 9 10
3 5 7
5 < 10
Nilai yang
dicari
5 < 7
0 1 2 3 4 5 6 7 8
indek
s
Ditemukan nilai 5 di posisi
ke 1
![Page 10: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/10.jpg)
BINARY SEARCH : CONTOH <BINARY_CARIPOSISI.CPP>
# I N C L U D E < I O S T R E A M . H >
# I N C L U D E < C O N I O . H >
I N T C A R I ( I N T D A T A [ ] , I N T
N , I N T N I L A I )
{
I N T P O S I S I ;
I N T K I R I _ A K H I R ,
K A N A N _ A K H I R , B A G I A N ,
I N D E K S _ A K H I R ;
P O S I S I = - 1 ;
K I R I _ A K H I R = ( N / 2 ) ;
K A N A N _ A K H I R = N - 1 ;
B A G I A N = 1 ;
W H I L E ( B A G I A N < = 2 )
{
I F ( B A G I A N = = 1 )
I N D E K S _ A K H I R =
K I R I _ A K H I R ;
E L S E I F ( B A G I A N = = 2 )
I N D E K S _ A K H I R =
if(nilai == data[indeks_akhir])
{
posisi = indeks_akhir;
break;
}
else if(nilai < data[indeks_akhir])
{
if(bagian==1)
{
n=kiri_akhir;
kiri_akhir = (n / 2) ;
kanan_akhir = n ;
}
else
{
n=kanan_akhir;
kiri_akhir =
n-(((n - (kiri_akhir+2))+2)/2) ;
kanan_akhir = n ;
}
bagian = 1;
}
else if(nilai > data[indeks_akhir])
bagian = 2;
}
return posisi;
}
Page
1
Page
2
![Page 11: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/11.jpg)
BINARY SEARCH : CONTOH <BINARY_CARIPOSISI.CPP>
void main()
{
int data[] = {3,5,7,9,10,11,15,18,20} ;
int dicari, posisi ;
cout <<"Masukkan nilai : ";
cin >>dicari;
posisi = cari(data, 9, dicari);
if(posisi == -1)
cout <<"Nilai " <<dicari
<<" tidak ditemukan" ;
else
cout << "Nilai " << dicari
<<" ada di posisi ke-" <<posisi ;
getch();
}
Page
3
![Page 12: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/12.jpg)
T U G A S Tulis beberapa program dari slide Chapter 2 (Part 2) ini dan coba
jalankan, program tersebut dapat ditemukan pada slide yang judulnyaterdapat kata Contoh dan atau Latihan.
Setelah semua program sukses dijalankan, copy file .cpp dan .exe ke
satu folder yang bernamakan [C2P2-KELAS-NAMA-NIM], contoh
KELAS : 1XNIM : 2011050505NAMA : EMAN SURYAMAN JUNAEDI
C2P2-1X-EMAN SURYAMAN JUNAEDI-2011050505
Kumpulkan ke Ketua Kelas, Folder yang berisi file .cpp dan .exe anda.Ketua Kelas mengumpulkan semua latihan mahasiswa padapertemuan/perkuliahan selanjutnya dalam 1 Folder untuk kelasnya tersebut.
Namakan Foldernya dengan [C2P2-KELAS].
C2P2-1X
![Page 13: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/13.jpg)
T A N T A N G A N
Dari contoh program “binary_cariposisi.cpp” diatas, coba
buat dengan logika dan algoritma versi sendiri:
Program dapat dijalankan dengan baik (tidak ada error), dan kode
program lebih sedikit dibandingkan dengan kode program yang ada
pada contoh diatas “binary_cariposisi.cpp”. Mendapatkan 100 untuk
nilai UTS.
Program dapat dijalankan dengan baik (tidak ada error), dengan
menggunakan algoritma yang beda pada contoh program diatas
“binary_cariposisi.cpp”. Mendapatkan 90 untuk nilai UTS.
Kumpulkan langsung pada pertemuan selanjutnya (KALAU
BISA LANGSUNG DIBAHAS).
![Page 14: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/14.jpg)
BINARY SEARCH : CONTOH <BINARY_CARIPOSISI.CPP>
# I N C L U D E < I O S T R E A M . H >
# I N C L U D E < C O N I O . H >
I N T C A R I ( I N T D A T A [ ] , I N T
N , I N T N I L A I )
{
I N T P O S I S I ;
I N T K I R I _ A K H I R ,
K A N A N _ A K H I R , B A G I A N ,
I N D E K S _ A K H I R ;
P O S I S I = - 1 ;
K I R I _ A K H I R = ( N / 2 ) ;
K A N A N _ A K H I R = N - 1 ;
B A G I A N = 1 ;
W H I L E ( B A G I A N < = 2 )
{
I F ( B A G I A N = = 1 )
I N D E K S _ A K H I R =
K I R I _ A K H I R ;
E L S E I F ( B A G I A N = = 2 )
I N D E K S _ A K H I R =
if(nilai == data[indeks_akhir])
{
posisi = indeks_akhir;
break;
}
else if(nilai < data[indeks_akhir])
{
if(bagian==1)
{
n=kiri_akhir;
kiri_akhir = (n / 2) ;
kanan_akhir = n ;
}
else
{
n=kanan_akhir;
kiri_akhir =
n-(((n - (kiri_akhir+2))+2)/2) ;
kanan_akhir = n ;
}
bagian = 1;
}
else if(nilai > data[indeks_akhir])
bagian = 2;
}
return posisi;
}
Page
1
Page
2
![Page 15: Algoritma](https://reader035.vdocuments.mx/reader035/viewer/2022071705/55a3d4b91a28ab882f8b4598/html5/thumbnails/15.jpg)
BINARY SEARCH : CONTOH <BINARY_CARIPOSISI.CPP>
void main()
{
int data[] = {3,5,7,9,10,11,15,18,20} ;
int dicari, posisi ;
cout <<"Masukkan nilai : ";
cin >>dicari;
posisi = cari(data, 9, dicari);
if(posisi == -1)
cout <<"Nilai " <<dicari
<<" tidak ditemukan" ;
else
cout << "Nilai " << dicari
<<" ada di posisi ke-" <<posisi ;
getch();
}
Page
3