Pencarian Bagi Dua (Binary Search) - Algoritma dan Pemograman

Algoritma dan Pemograman

Pencarian bagi dua adalah metode pencarian data berdasarkan kelompok bagian mana yang memungkinkan nilai datanya mendekati data yang dicari. Metode pencarian ini hanya dapat dilakukan pada sekumpulan data yang sudah terurut saja. Berikut adalah contoh ilustrasinya :

Pencarian (Searching)

Berikut adalah contoh pencarian bagi dua beserta penulisannya dalam bahasa algoritmik dan beberapa bahasa pemograman :

1. Bahasa Algoritmik

{ Deklarasi variabel dan sekaligus memberi nilai pada myArray }
myArray     : array[0..5] of integer = (0, 1, 2, 3, 4, 5)
kiri        : integer
kanan       : integer
tengah      : integer
cari        : boolean
masukan     : integer

{ Memberi masukan ke dalam variabel kiri, kanan, tengah, dan cari }
kiri    <- 0
kanan   <- 0
tengah  <- 0
cari    <- false

{ Masukan data yang dicari }
input(masukan)

{ Proses pencarian bagi dua }
while ((cari = false) and (kanan ≥ kiri))
    if (myArraytengah = masukan)
        cari <- true
    else if (myArraytengah > masukan)
        kanan <- kanan-1
    else
        kiri <- kiri + 1

{ Keluaran hasil pencarian }
if (cari)
    output('Data ketemu di indeks : ', tengah)
else
    output('Data tidak ditemukan!')

2. Bahasa Pascal

program pencarianBagiDua;

{ Deklarasi variabel dan sekaligus memberi nilai pada myArray }
var
    myArray : array[0..5] of integer = (0, 1, 2, 3, 4, 5);
    kiri    : integer;
    kanan   : integer;
    tengah  : integer;
    cari    : boolean;
    masukan : integer;

begin
    { Memberi masukan ke dalam variabel kiri, kanan, tengah, dan cari }
    kiri    := 0;
    kanan   := length(myArray)-1;
    tengah  := 0;
    cari    := false;

    { Masukan data yang dicari }
    write('Input data : ');
    readln(masukan);

    { Proses pencarian bagi dua }
    while ((cari = false) and (kanan >= kiri)) do
    begin
        tengah := (kanan + kiri) div 2;

        if (myArray[tengah] = masukan) then
        begin
            cari := true;
        end
        else if (myArray[tengah] > masukan) then
        begin
            kanan := kanan-1;
        end
        else
        begin
            kiri := kiri + 1;
        end;
    end;

    { Keluaran hasil pencarian }
    if (cari) then
    begin
        writeln('Data ketemu di indeks : ', tengah);
    end
    else
    begin
        writeln('Data tidak ditemukan!');
    end;
end.

3. Bahasa C++

#include <iostream>
using namespace std;

int main()
{
    // Deklarasi variabel dan sekaligus mengisi beberapa nilai
    int myArray[6] = {0, 1, 2, 3, 4, 5};
    int kiri = 0;
    int kanan = sizeof(myArray)/sizeof(myArray[0])-1;
    int tengah = 0;
    bool cari = false;
    int masukan;

    // Masukan data yang dicari
    cout << "Input data : ";
    cin >> masukan;

    // Proses pencarian bagi dua
    while ((cari == false) && (kanan >= kiri))
    {
        tengah = (kanan + kiri) / 2;
        
        if (myArray[tengah] == masukan)
        {
            cari = true;
        } else if (myArray[tengah] > masukan)
            {
                kanan -= 1;
            } else
            {
                kiri += 1;
            }
    }

    // Keluaran hasil pencarian
    if (cari)
    {
        cout << "Data ketemu di indeks : " << tengah << endl;
    } else
        {
            cout << "Data tidak ditemukan!" << endl;
        }

    // Mengembalikan nilai
    return 0;
}

4. Bahasa Java

import java.util.Scanner;

public class Main
{
    public static void main(String[]args)
    {
        // Deklarasi variabel dan sekaligus mengisi beberapa nilai
        int[] myArray = {0, 1, 2, 3, 4, 5};
        int kiri = 0;
        int kanan = myArray.length-1;
        int tengah = 0;
        boolean cari = false;
        int masukan;

        // Masukan data yang dicari
        Scanner inputan = new Scanner(System.in);
        System.out.print("Input data : ");
        masukan = inputan.nextInt();

        while ((cari == false) && (kanan >= kiri))
        {
            tengah = (kanan + kiri) / 2;

            if (myArray[tengah] == masukan)
            {
                cari = true;
            } else if (myArray[tengah] > masukan)
                {
                    kanan -= 1;
                } else
                {
                    kiri += 1;
                }
        }

        // Keluaran hasil pencarian
        if (cari)
        {
            System.out.println("Data ketemu di indeks : " + (tengah));
        } else
            {
                System.out.println("Data tidak ditemukan!");
            }
    }
}
4or Education

4or Education hadir sebagai blog edukasi yang menemanimu menjelajahi samudra ilmu pengetahuan dan teknologi. Di sini, kamu akan menemukan berbagai artikel menarik dan informatif seputar : Pengetahuan, Pendidikan, Teknologi, dan Lain-lain.

Posting Komentar

Lebih baru Lebih lama