Makalah Algoritma dan Pemrograman II Semester 2
MAKALAH
ALGORITMA
DAN PEMROGRAMAN II
SEQUENTIAL SEARCH
DISUSUN OLEH:
Nama :
Julianus zai
Kelas
: 02TPLMN
Nim : 2015141890
TEKNIK
INFORMATIKA
FAKULTAS
TEKNIK
UNIVERSITAS
PAMULANG
KATA
PENGANTAR
Puji syukur kita panjatkan kehadirat Tuhan Yang Maha Esa yang telah memberikan rahmat serta hidayah-Nya sehingga penyusunan makalah ini dapat diselesaikan.
Tugas ini disusun untuk diajukan sebagai tugas mata kuliah Algoritma Pemrograman dengan judul “PENCARIAN(SEARCHING)”.Terima kasih disampaikan semua pihak yang telah membantu kelancaran tugas ini sehingga dapat diselesaikan tepat pada waktunya.
Demikianlah
tugas ini disusun semoga bermanfaat, umumnya untuk para pembaca dan khususnya
bagi penyusun.
Pamulang, 23 Agustus 2016
Penyusun
DAFTAR ISI
KATA PENGANTAR........................................................................................................
DAFTAR ISI......................................................................................................................
BAB I PENDAHULUAN.................................................................................................
A. Latar Belakang.............................................................................................................
1. Tujuan.....................................................................................................................
BAB II PEMBAHASAN.....................................................................................................
A. Pengertian Searching....................................................................................................
B. Ilustrasi Metode Linier Search....................................................................................
B. Ilustrasi Metode Linier Search....................................................................................
C. Contoh Pemrograman Searching
dalam Algoritma....................................................
D. Metode Pencarian Biner...............................................................................................
- Kelebihan...................................................................................................................
- Kekurangan ...............................................................................................................
BAB III PENUTUP ..........................................................................................................
Kesimpulan......................................................................................................................
DAFTAR PUSTAKA........................................................................................................
BAB I
PENDAHULUAN
A. Latar Belakang
Pada pembuatan makalah
kali ini saya akan membahas tentang Pencarian (Searching), dengan metode
Sequential Searching. Sequential Search (pencarian beruntun) menggunakan
prinsip sebagai berikut, data yang ada di bandingkan satu persatu secara
berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak di
temukan.
Pencarian (searching)
merupakan proses yang sering digunakan dalam pengelolaan data. Proses pencarian
adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe
sama (baik bertipe dasar atau bertipe bentukan). Data dapat disimpan secara
temporer dalam memori utama atau disimpan secara permanen di dalam memori
sekunder (tape atau disk). Didalam memori utama , struktur penyimpanan data
yang umum adalah brupa larik atau tabel (array), sedangkan di dalam memori
sekunder berupa arsip (file). Algoritma pencarian yang akan dibicarakan dimulai
dengan algoritma pencarian yang paling sederhana yaitu pencarian beruntun atau
Sequential Search.
1. Tujuan
2. Mahasiswa dapat memahami salah satu
metode algoritma pencarian
3. Mahasiswa dapat membuat algoritma dan
program dalam bahasa pascal dengan metode-metode Searching.
BAB II
PEMBAHASAN
A. PENGERTIAN
Pencarian (searching)
merupakan proses yang sering digunakan dalam pengelolaan data. Proses
pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang
bertipe sama (baik bertipe dasar atau bertipe bentukan). Search algoritma
adalah algoritma yang menerima argument A dan mencoba untuk mencari record yang
mana keynya adalah A.
Algoritma bisa
mengembalikan nilai record, atau pointer ke record. Reord sendiri adalah tipe
data yang terdiri atas kumpulan variabel disebut field. Sequential search
(penelusuran sequensial) yaitu proses mengunjungi melalui suatu pohon dengan
cara setiap simpul di kunjungi hanya satu kali yang disebut dengan tree
transversal / kunjungan pohon.
Data dapat disimpan
secara temporer dalam memori utama atau disimpan secara permanen di dalam
memori sekunder (tape atau disk). Di dalam memori utama, struktur penyimpanan
data yang umum adalah berupa larik atau tabel (array), sedangkan di dalam
memori sekunder berupa aesip (file).
Aktivitas yang
berkaitan dengan pengolahan data ini sering di dahului dengan proses pencarian.
Sebagai contoh, untuk mengubah (update) data tertentu, langkah pertama yang
harus dilakukan adalah mencari keberadaan data tersebut di dalam kumpulannya.
Aktivitas yang awal sama juga dilakukan pada proses penambahan (insert) data
yang baru. Proses penambahan data dimulai dengan mencari apakah data yang
ditambahkan sudah terdapat di dalam kumpulan. Jika sudah dan mengasumsikan
tidak boleh ada duplikasi data,maka data tersebut tidak perlu di tambahkan,
tetapi jika belum ada, maka tambahkan.
Algoritma pencarian
yang akan dibicarakan 3 cara yaitu
1. Pencarian
Berurutan (Sequential Searching).
2. Pencarian
Biner (Binary Seacrh).
3. Sequential
Shearching
Adalah suatu teknik
pencarian data dalam array (1 dimensi) yang akan menelusuri semua elemen-elemen
array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih
dahulu. Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada
dibandingkan satu per satu secara berurutan dengan yang dicari sampai data
tersebut ditemukan atau tidak ditemukan. Algoritma pencarian secara linear
digunakan untuk mencari sebuah nilai pada tabel sembarang. Ada dua macam cara
pencarian pada tabel. Algoritma ini mempunyai dua jenis metode yaitu dengan
boolean dan tanpa boolean. Algoritma pencairan secara linear melakukan
pengulangan sebanyak 1 kali untuk kasus terbaik (value sama dengan elemen
pertama dalam tabel) dan Nmax kali untuk kasus terburuk. Sehingga algoritma ini
mempunyai kompleksitas algoritma O(n).
Proses pencarian data
dengan metode ini cukup sederhana dan mudah dipahami. Dalam pencarian ini
proses dilakukan dengan cara mencocokan data yang akan dicari dengan semua data
yang ada dalam kelompok data. Proses pencarian data dilakukan dengan cara
mencocokan data yang akan dicari dengan semua data yang ada dalam kelompok
data. Proses pencocokan data dilakukan secara berurut satu demi satu dimulai
dari data ke-1 hingga data pada ururtan terakhir. Jika data yang dicari
mempunyai harga yang sama dengan data yang ada dalam kelompok data, berarti
data telah ditemukan. Tetapi jika data yang dicari tidak ada yang cocok dengan
data-data dalam sekelompok data, berarti data tersebut tidak ada dalam sekelompok
data.Selanjutnya kita tinggal menampilkan hasil yang diperoleh tersebut.
B. Ilustrasi Metode Linier Search :
Misalnya terdapat array satu dimensi
sebagai berikut:
0
1 2
3 4
5
6 7
index
8
|
10
|
12
|
6
|
7
|
1
|
50
|
100
|
Value
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”.
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
C. Contoh Program dalam Bahasa
Pemograman Pascal
program search_aditya;
uses crt;
const
nmin = 1;
nmax = 100;
type
arrint = array [nmin..nmax] of
integer;
var
x :
integer;
tabint : arrint;
n,i : integer;
indeks : integer;
function seqsearch1(xx :
integer): integer;
var i : integer;
begin
i := 1;
while ((i xx)) do
i:=i+1;
if
tabint[i] = xx then
seqsearch1:=i
else
seqsearch1:=0;
end;
begin
clrscr;
write('input banyaknya index
array = '); readln(n);
for i:=1 to n do
begin
write('Tabint[',i,'] = '); readln(tabint[i]);
end;
write('Nilai yang dicari = ');
readln(x);
indeks:=seqsearch1(x);
if indeks <> 0 then
write(x,' ditemukan
pada indeks ke-',indeks)
else
write(x,' tidak
ditemukan');
writeln;
readln;
end.
2. Pencarian Biner
(Binary Seacrh).
Binary search adalah
algoritma pencarian untuk data yang terurut. Pencarian dilakukan dengan cara
menebak apakah data yang dicari berada ditengah-tengah data, kemudian
membandingkan data yang dicari dengan data yang ada ditengah. Bila data yang
ditengah sama dengan data yang dicari, berarti data ditemukan. Namun, bila data
yang ditengah lebih besar dari data yang dicari, maka dapat dipastikan bahwa
data yang dicari kemungkinan berada disebelah kiri dari data tengah dan data
disebelah kanan data tengah dapat diabai.Upper bound dari bagian
data kiri yang baru adalah indeks dari data tengah itu sendiri.Sebaliknya, bila
data yang ditengah lebih kecil dari data yang dicari, maka dapat dipastikan
bahwa data yang dicari kemungkinan besar berada disebelah kanan dari data
tengah. Lower bound dari data disebelah kanan dari data tengah
adalah indeks dari data tengah itu sendiri ditambah 1. Demikian seterusnya.
Sebuah algoritma
pencarian biner (atau pemilahan biner) adalah sebuah teknik untuk menemukan
nilai tertentu dalam sebuah larik (array) linear, dengan menghilangkan setengah
data pada setiap langkah, dipakai secara luas tetapi tidak secara ekslusif
dalam ilmu komputer.
Sebuah pencarian biner
mencari nilai tengah (median), melakukan sebuah pembandingan untuk menentukan
apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah
sisanya dengan cara yang sama. Pada intinya, algoritma ini menggunakan prinsip
divide and conquer, dimana sebuah masalah atau tujuan diselesaikan dengan cara
mempartisi masalah menjadi bagian yang lebih kecil. Algoritma ini membagi
sebuah tabel menjadi dua dan memproses satu bagian dari tabel itu
saja.Algoritma ini bekerja dengan cara memilih record dengan indeks tengah dari
tabel dan membandingkannya dengan record yang hendak dicari. Jika record
tersebut lebih rendah atau lebih tinggi, maka tabel tersebut dibagi dua dan
bagian tabel yang bersesuaian akan diproses kembali secara rekursif.
Penerapan terbanyak
dari pencarian biner adalah untuk mencari sebuah nilai tertentu dalam sebuah
list terurut.Jika dibayangkan, pencarian biner dapat dilihat sebagai sebuah
permainan tebak-tebakan, kita menebak sebuah bilangan, atau nomor tempat, dari
daftar (list) nilai.
Pencarian diawali
dengan memeriksa nilai yang ada pada posisi tengah list; oleh karena
nilai-nilainya terurut, kita mengetahui apakah nilai terletak sebelum atau
sesudah nilai yang di tengah tersebut, dan pencarian selanjutnya dilakukan
terhadap setengah bagian dengan cara yang sama.
Metoda Pencarian Biner
( Binary Search) hanya bisa diterapkan jika data array sudah terurut.
Pengurutan Array bisa
menggunakan jenis sorting descending atau asscending.
Keunggulan
Keunggulan utama dari algoritma binary search adalah kompleksitas algoritmanya yang lebih kecil daripada kompleksitas algoritma sequential search. Hal ini menyebabkan waktu yang dibutuhkan algoritma binary search dalam mencari sebuah record dalam sebuah table, lebih kecil daripada waktu yang dibutuhkan algoritma sequential search.
Keunggulan utama dari algoritma binary search adalah kompleksitas algoritmanya yang lebih kecil daripada kompleksitas algoritma sequential search. Hal ini menyebabkan waktu yang dibutuhkan algoritma binary search dalam mencari sebuah record dalam sebuah table, lebih kecil daripada waktu yang dibutuhkan algoritma sequential search.
Kelemahan
Data harus disorting
dahulu dan algoritma lebih rumit, tidak baik untuk data berantai.algoritma ini
hanya bisa digunakan pada tabel yang elemennya sudah terurut baik menaik maupun
menurun.
Fungsi
Pencarian Biner (Binary Search) dilakukan untuk :
Pencarian Biner (Binary Search) dilakukan untuk :
·
Memperkecil jumlah operasi pembandingan
yang harus dilakukan antara data yang dicari dengan data yang ada di dalam
tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
·
Prinsip dasarnya adalah melakukan proses
pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau
sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data
tidak ditemukan).
·
Syarat utama untuk pencarian biner
adalah data di dalam tabel harus sudah terurut, misalkan terurut menaik.
·
Prinsip dari pencarian
biner dapat dijelaskan sebagai berikut :
-
Data diambil dari posisi 1 sampai posisi
akhir N
-
Kemudian cari posisi data tengah dengan
rumus (posisi awal + posisi akhir) / 2
-
Kemudian data yang dicari dibandingkan
dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar?
-
Jika lebih besar, maka proses pencarian
dicari dengan posisi awal adalah posisi tengah + 1
-
jika lebih kecil, maka proses pencarian
dicari dengan posisi akhir adalah posisi tengah – 1
-
Jika data sama, berarti ketemu.
Untuk lebih jelasnya, perhatikan
contoh berikut. Misalkan kita ingin mencari 17 pada sekumpulan data berikut:
1. Mula–mula dicari
data tengah, dengan rumus (1+ 9) / 2 = 5.
2. Berarti data tengah
adalah data ke-5, yaitu 15.
3. Data yang dicari,
yaitu 17, dibandingkan dengan data tengah ini.
4. Karena 17 > 15,
berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama dengan
posisi tengah + 1 atau 6.
1. Data tengah yang
baru didapat dengan rumus (6 + 9) / 2 = 7. Berarti data tengah yang baru adalah
data ke-7, yaitu 23.
2. Data yang dicari,
yaitu 17 dibandingkan dengan data tengah ini.
3. Karena 17 < 23,
berarti proses dilanjutkan tetapi kali ini posisi akhir dianggap sama dengan
posisi tengah – 1 atau 6.
1. Data tengah yang
baru didapat dengan rumus (6 + 6) / 2 = 6. Berarti data tengah yang baru adalah
data ke-6, yaitu 17.
2. Data yang dicari
dibandingkan dengan data tengah ini dan ternyata sama. Jadi data ditemukan pada
indeks ke-6.
3. Bagaimana jika data
yang dicari tidak ada, misalnya 16?
4. Pencarian biner ini
akan berakhir jika data ditemukan atau posisi awal lebih besar dari posisi
akhir.
5. Jika posisi awal
sudah lebih besar daripada posisi akhir berarti data tidak ditemukan.
Untuk lebih jelasnya
perhatikan proses pencarian 16 pada data di atas. Prosesnya hampir sama dengan
pencarian 17. Tetapi setelah posisi awal = posisi akhir = 6, proses masih
dilanjutkan lagi dengan posisi awal = 6 dan posisi akhir = 5
Disini dapat dilihat
bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak
ditemukan.
2. Algoritma dari Binary
search
Algoritma pencarian
biner dapat dituliskan sebagai berikut :
1 L ← 0
2 R ← N - 1
3 ketemu ← false
4 Selama (L <= R)
dan (tidak ketemu) kerjakan baris 5 sampai dengan 8
5 m ← (L + R) / 2
83
6 Jika (Data[m] = x)
maka ketemu ← true
7 Jika (x <
Data[m]) maka R ← m – 1
8 Jika (x >
Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m
adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
Contoh Studi Kasus
Sebuah contoh aksi
pencarian biner adalah sebuah permainan tebak-tebakan dimana seorang pemain
harus menebak sebuah bilangan bulat positif yang dipilih oleh pemain lain di
antara 1 dan N, dengan memanfaatkan jawaban pertanyaan berupa ya dan tidak.
Misalnya N adalah 16 dan angka yang dipilih adalah 11, permainan dapat berjalan
sebagai berikut:
·
Apakah angka lebih besar dari 8? (ya)
·
Apakah angka lebih besar dari 12?
(tidak)
·
Apakah angka lebih besar dari 10? (ya)
·
Apakah angka lebih besar dari 11?
(tidak)
Sehingga, angka
tersebut pasti 11.Pada setiap langkah, kita memilih sebuah angka yang tepat
berada di tengah-tengah jangkauan nilai-nilai yang mungkin. Sebagai contoh,
saat kita mengetahui angka tersebut lebih besar dari 8, tetapi lebih kecil atau
sama dengan 12, kita mengetahui untuk memilih angka di tengah-tengah jangkauan
[9, 12] (pada kasus ini 10 adalah yang optimal).
Program :
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i;
int cari,ketemu;
int A[100] ;
cout<<"Program Searching\n";
cout<<"masukkan 7 buah data : \n\n";
for (i=1;i<=7;i++)
{
cout<<"masukkan data ke-"<<i<<endl;
cin>>A[i] ;
}
cout<<endl;
cout<<"Input bilangan yang dicari : ";
cin>>cari;
ketemu=0;
for(i=0;i<=7;i++)
{
if (A[i]==cari)
{
ketemu=1;
cout<<"Data ditemukan
pada indeks ke-"<<i;
}
}
if (ketemu==0){
cout<<"Data tidak ditemukan";
}
getch();
}
BAB III
PENUTUP
A. Kesimpulan
Sequential search lebih efektif
jika digunakan pada sekumpulan data yang sedikit, sedangkan binary search
efektif jika digunakan pada sekumpulan data yang berjumlah banyak.
Sequential search dapat digunakan pada sekumpulan data yang urut ataupun tidak urut, sedangkan binary search harus pada data yang sudah urut. Sedangkan proses pencarian interpolation search hampir mirip dengan proses pencarian kata dikamus, yaitu kita mencari data yang dimaksud dengan cara memperkirakan letak data.
Sequential search dapat digunakan pada sekumpulan data yang urut ataupun tidak urut, sedangkan binary search harus pada data yang sudah urut. Sedangkan proses pencarian interpolation search hampir mirip dengan proses pencarian kata dikamus, yaitu kita mencari data yang dimaksud dengan cara memperkirakan letak data.
DAFTAR
PUSTAKA
http://1-matakuliah.blogspot.co.id/
No comments :
Post a Comment