Pencarian Sequential dan Binari



Pencarian (searching) adalah salah satu hal penting dalam banyak kasus pemrograman. Pencarian (searching) dilakukan untuk menemukan nilai tertentu pada sejumlah nilai yang tersedia. Terdapat bermacam-macam algoritma pencarian yang telah dikembangkan dengan ide dasar. Dua diantaranya adalah pencarian berurutan (sequential search) dan pencarian biner (binary search, dicotomic search).
          Teknik pencarian data dari array yang paling mudah adalah dengan cara sequential search dimana data dalam array dibaca 1 demi satu, diurutkan dari index terkecil ke index yang terbesar,maupun sebaliknya. Teknik selanjutnya adalah binary search. Pada metode pencarian ini data harus diurutkan terlebih dahulu. Pada metode pencarian ini data dibagi menjadi dua bagian (secara logika), untuk setiap tahap pencarian.

Berikut ini merupakan contoh program pencarian sequential dan binary menggunakan pascal 




Untuk kodingnnya bisa dilihat di bawah ini
program pencarian_sequential_dan_binary;
uses crt;
//pendeklarasian constanta
const
    nmin=1;
    nmax=100;

//pendeklarasian variabel lokal dan array
type arrint = array [nmin..nmax] of integer;
var x            : integer;
    tabint       : arrint;
    n,i,j,indeks : integer;
    pilih        : char;

//function untuk pencarian sequential
function seqsearc1(xx: integer): integer;
var i: integer;
begin
//berikut merupakan algoritma yang digunakan untuk melakukan pencarian sequential
    i:=1;
    while ((i<n) and (tabint[i]<>xx)) do
    i:= i+1;
        if tabint[i]= xx then
            seqsearc1:=i
        else
            seqsearc1:=0;
end;

//function untuk pencarian binary
function binary(xx: integer):integer;
//pendeklarasian variabel untuk function binary
var
    ats,bwh,tngh: integer;
    ketemu:boolean;
    indeksxx: integer;
begin
//pendeklarasian nilai awal
    ats:= 1;
    bwh:= n;
    ketemu :=false;
    indeksxx := 0;

//berikut merupakan algoritma yang digunakan untuk melakukan pencarian binary
while ((ats <= bwh) and (not ketemu)) do
begin
    tngh:= (ats+bwh) div 2;
    if xx = tabint[tngh] then
    begin
        ketemu := true;
        indeksxx := tngh;
    end
    else
    begin
        if xx = tabint[tngh] then
           bwh :=  tngh-1
        else
           ats := tngh+1;
    end;
end;
binary:=indeksxx;
end;

//berikut merupakan procedure yang digunakan untuk melakukan
//pengurutan data pada pencarian binary
procedure bubble;
var     temp:integer;
begin
//berikut algoritma yang digunakan untuk melakukan pengurutan data
    for i:=n downto 2 do
    begin
        for j:=1 to i-1 do
        if tabint[j] > tabint[j+1] then
        begin
           temp          := tabint[j+1];
           tabint[j+1]   := tabint[j];
           tabint[j]     :=temp;
        end;
    end;

//algoritma untuk menampilkan data yang telah urut
    write('Data setelah diurutkan : ');
    for i:= 1 to n do
    begin
                write(tabint[i],' ');
    end;
    writeln;
end;

//procedure menu 1 yaitu pencarian sequential
procedure menu1;
begin
clrscr;
    writeln('      Pencarian Sequential');
    writeln;
    //input jumlah data yang akan diinput
    write('Jumlah data : '); readln(n);
    writeln;
    //input data le1 sampai nmenggunakan perulangan for
        for i:= 1 to n do
        begin
            write('Indeks [',i,'] : '); readln(tabint[i]);
        end;
    writeln;

    //pencarian data yang ingin dicari menggunakan pencarian sequential
    write('Masukkan Data Yang Ingin Dicari     : '); readln(x);
    indeks:=seqsearc1(x);
    writeln;
    if indeks <> 0 then
        write(x,' Ditemukan pada indeks ke-',indeks)
    else
        write(x,' Tidak ditemukan');
readln;
end;

//procedure menu 2 yaitu pencarian binary
procedure menu2;
begin
clrscr;
    writeln('        Pencarian Binary');
    writeln;
    //input jumlah data yang akan diinput
    write('Jumlah data : '); readln(n);
    writeln;
    //input data le1 sampai nmenggunakan perulangan for
    for i:= 1 to n do
        begin
            write('Indeks [',i,'] : '); readln(tabint[i]);
        end;
    writeln;

    //pemanggilan procedure bubble
    bubble;
    //pencarian data yang ingin dicari menggunakan pencarian binary
    write('Masukkan Data Yang Ingin Dicari     : '); readln(x);
    indeks:=binary(x);
    writeln;
    if indeks <> 0 then
        write(x,' Ditemukan pada indeks ke-',indeks)
    else
        write(x,' Tidak ditemukan');
readln;
end;

//program utama atau menu utama
begin
repeat
clrscr;
        writeln('           Program Pencarian ');
        writeln('     ---------------------------');
        writeln('     [1] Pencarian Sequential');
        writeln('     [2] Pencarian Binary');
        writeln('     [0] Keluar     ');
        writeln;
        write('     Pilih : '); readln(pilih);

        case pilih of
        '1' : menu1;
        '2' : menu2;
        '0': exit;
        end;
until pilih='0';
end.
Pencarian Sequential dan Binari Pencarian Sequential dan Binari Reviewed by Ardiansyahsw on 02.34 Rating: 5

Tidak ada komentar:

Events

Diberdayakan oleh Blogger.