Hi blogger, kali ini saya mau berbagi bahan dan materi kuliah di semester IV ini yang membahas tentang Binary dan Sequential Search, yang merupakan Mata Kuliah Pemograman Terstruktur (DELPHI).
Well disini saya akan memaparkan contoh soal dan codingnya tentang kolaborasi duet maut Searching dan Sorting. Let’s check this out!
Sebelumnya ada baiknya kita mengetahui sedikit APA ITU Binary dan Sequential Search
Algoritma sequential search adalah salah satu algoritma yang digunakan untuk memecahkan masalah pencarian data pada suatu data larik/array. Cara kerja dari algoritma ini adalah dengan menelusuri elemen-elemen array dari awal sampai akhir, dimana data tidak perlu diurutkan terlebih dahulu. Kemungkinan terbaik(best case) dari algoritma ini adalah jika data yang dicari berada pada elemen array yang terdepan sehingga waktu yang dibutuhkan untuk pencarian data semakin singkat. Sebaliknya, akan mencapai kondisi terburuk(wors case) apabila data yang dicari berada pada elemen akhir.
Metode pencarian beruntun atau linear (sequential search) dapat dipergunakan apabila:
Nilai-nilai tersebut sudah tersusun secara berurutan.
Nilai-nilai tersebut disusun ke dalam bentuk array atau struktur data sejenis yang masing-masing nilai tersimpan dalam bagian-bagian yang mempunyai indeks yang unik dan indeksnya berurutan dari yang paling kecil hingga yang paling besar (bersifat ordinal).
--------------------------------------------------------------------------------------------
program binary_search;
{$APPTYPE CONSOLE}
uses
SysUtils;
CONST
Max = 100;
TYPE
ArrData = ARRAY[1..Max] OF INTEGER;
PROCEDURE INPUT_DATA(var D :ArrData; N:INTEGER);
VAR
I : INTEGER;
BEGIN
FOR I:=1 TO N DO
BEGIN
WRITE('Tentukan Data ke - ',I,' : ');
READLN(D[I]);
END;
END;
{--------------------Fungsi Sequential search----------------------}
FUNCTION SEQUENTIAL_SEARCH(var D :ArrData; N,Cari:INTEGER):BOOLEAN;
VAR
I : INTEGER;
Ketemu : BOOLEAN;
BEGIN
I:=1;
Ketemu := False;
WHILE((I<=N) AND (Ketemu=False)) DO
BEGIN
IF(D[I]=Cari) THEN Ketemu:=True;
I:=I+1
END;
SEQUENTIAL_SEARCH:=Ketemu;
END;
{--------------------------Program Utama---------------------------}
VAR
Data : ArrData;
Jumlah, I, Cari : INTEGER;
begin
{ TODO -oUser -cConsole Main : Insert code here }
WRITE('Tentukan Jumlah Data : ');READLN(Jumlah);
INPUT_DATA(Data, Jumlah);
WRITELN;
WRITE('Tentukan data yang ingin dicari : ');
READLN(Cari);
IF (SEQUENTIAL_SEARCH(Data,Jumlah,Cari)) THEN
WRITELN('Data Ditemukan')
ELSE
WRITELN('Data Tidak Ditemukan');
READLN;
end.
Well disini saya akan memaparkan contoh soal dan codingnya tentang kolaborasi duet maut Searching dan Sorting. Let’s check this out!
Sebelumnya ada baiknya kita mengetahui sedikit APA ITU Binary dan Sequential Search
Dalam
ilmu komputer, sebuah algoritma
pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima
masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah
tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Operasi pencarian adalah operasi untuk menemukan sebuah
nilai (data) di dalam sekumpulan nilai yang bertipe sama.
Untuk menemukan nilai yang dicari, instruksi yang paling penting yang harus dilakukan
adalah memeriksa jika nilai yang dicari sama dengan salah satu nilai dalam kumpulan nilai
yang dimaksud. Metode pencarian yang bisa dipergunakan tergantung dari Bagaimana urutan nilai-nilai di dalam kumpulan nilai
dan bagaimana struktur data yang dipergunakan untuk menyusun
nilai-nilai tersebut.
Sequential Search
Algoritma sequential search adalah salah satu algoritma yang digunakan untuk memecahkan masalah pencarian data pada suatu data larik/array. Cara kerja dari algoritma ini adalah dengan menelusuri elemen-elemen array dari awal sampai akhir, dimana data tidak perlu diurutkan terlebih dahulu. Kemungkinan terbaik(best case) dari algoritma ini adalah jika data yang dicari berada pada elemen array yang terdepan sehingga waktu yang dibutuhkan untuk pencarian data semakin singkat. Sebaliknya, akan mencapai kondisi terburuk(wors case) apabila data yang dicari berada pada elemen akhir.
Metode pencarian beruntun atau linear (sequential search) dapat dipergunakan apabila:
Nilai-nilai tersebut sudah tersusun secara berurutan.
Nilai-nilai tersebut disusun ke dalam bentuk array atau struktur data sejenis yang masing-masing nilai tersimpan dalam bagian-bagian yang mempunyai indeks yang unik dan indeksnya berurutan dari yang paling kecil hingga yang paling besar (bersifat ordinal).
Berikut soal yang udah saya janjikan tadi :
Mencari data dari array dari inputan user dengan metode sequential search,
tentu saja didalamnya harus menggunakan sorting(ingat-ingat binary
search itu harus terurut kan datanya?hehe) dan kalau data itu tidak
ketemu maka tuliskan data tidak ada namun jika ada kita tuliskan data
ada di binary dan kemudian kita lakukan pencarian data itu pada array
yang sudah disimpan oleh sistem, tuliskan data ada di sentinel jika data
tersebut ada
program Project_Sequential_Search;
{$APPTYPE CONSOLE}
uses
SysUtils;
CONST
Max = 100;
TYPE
ArrData = ARRAY[1..Max] OF INTEGER;
PROCEDURE INPUT_DATA(var D :ArrData; N:INTEGER);
VAR
I : INTEGER;
BEGIN
FOR I:=1 TO N DO
BEGIN
WRITE('Tentukan Data ke - ',I,' : ');
READLN(D[I]);
END;
END;
{--------------------Fungsi Sequential search----------------------}
FUNCTION SEQUENTIAL_SEARCH(var D :ArrData; N,Cari:INTEGER):BOOLEAN;
VAR
I : INTEGER;
Ketemu : BOOLEAN;
BEGIN
I:=1;
Ketemu := False;
WHILE((I<=N) AND (Ketemu=False)) DO
BEGIN
IF(D[I]=Cari) THEN Ketemu:=True;
I:=I+1
END;
SEQUENTIAL_SEARCH:=Ketemu;
END;
VAR
Data : ArrData;
Jumlah, I, Cari : INTEGER;
{--------------------------Program Utama---------------------------}
begin
{ TODO -oUser -cConsole Main : Insert code here }
WRITE('Tentukan Jumlah Data : ');READLN(Jumlah);
INPUT_DATA(Data, Jumlah);
WRITELN;
WRITE('Tentukan data yang ingin dicari : ');
READLN(Cari);
IF (SEQUENTIAL_SEARCH(Data,Jumlah,Cari)) THEN
WRITELN('Data Ditemukan')
ELSE
WRITELN('Data Tidak Ditemukan');
READLN;
end.
--------------------------------------------------------------------------------------------
Binary Search
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.
Metode pencarian beruntun (sequential) maupun metode
pencarian biner (binary search)
dapat dipergunakan, jika:
- Nilai-nilai tersebut sudah tersusun secara berurutan.
- Nilai-nilai tersebut disusun ke dalam bentuk array atau struktur data sejenis yang masing-masing nilai tersimpan dalam bagian-bagian yang mempunyai indeks yang unik dan indeksnya berurutan dari yang paling kecil hingga yang paling besar (bersifat ordinal).
Berikut soal yang udah saya janjikan tadi :
Mencari data dari array dari inputan user dengan metode sequential search,
tentu saja didalamnya harus menggunakan sorting(ingat-ingat binary
search itu harus terurut kan datanya?hehe) dan kalau data itu tidak
ketemu maka tuliskan data tidak ada namun jika ada kita tuliskan data
ada di binary dan kemudian kita lakukan pencarian data itu pada array
yang sudah disimpan oleh sistem, tuliskan data ada di sentinel jika data
tersebut ada
program binary_search;
{$APPTYPE CONSOLE}
uses
SysUtils;
CONST
Max = 100;
TYPE
ArrData = ARRAY[1..Max] OF INTEGER;
PROCEDURE INPUT_DATA(var D :ArrData; N:INTEGER);
VAR
I : INTEGER;
BEGIN
FOR I:=1 TO N DO
BEGIN
WRITE('Tentukan Data ke - ',I,' : ');
READLN(D[I]);
END;
END;
{--------------------Fungsi Sequential search----------------------}
FUNCTION SEQUENTIAL_SEARCH(var D :ArrData; N,Cari:INTEGER):BOOLEAN;
VAR
I : INTEGER;
Ketemu : BOOLEAN;
BEGIN
I:=1;
Ketemu := False;
WHILE((I<=N) AND (Ketemu=False)) DO
BEGIN
IF(D[I]=Cari) THEN Ketemu:=True;
I:=I+1
END;
SEQUENTIAL_SEARCH:=Ketemu;
END;
{--------------------------Program Utama---------------------------}
VAR
Data : ArrData;
Jumlah, I, Cari : INTEGER;
begin
{ TODO -oUser -cConsole Main : Insert code here }
WRITE('Tentukan Jumlah Data : ');READLN(Jumlah);
INPUT_DATA(Data, Jumlah);
WRITELN;
WRITE('Tentukan data yang ingin dicari : ');
READLN(Cari);
IF (SEQUENTIAL_SEARCH(Data,Jumlah,Cari)) THEN
WRITELN('Data Ditemukan')
ELSE
WRITELN('Data Tidak Ditemukan');
READLN;
end.
Semoga bermanfaat ya.
Terimakasih buat Ukhti Sebelah
Syukron
3 komentar:
makasih infona ya...
Sama sama, semoga membantu
Kak ada nggak sequential insertion vrp buat delphi?
Posting Komentar