Proses SEQUENTIAL(BERATURAN)



Proses Sequential Searching :
  • Pencarian dilakukan dari Data Pertama sampai Data Terakhir.
  • Jika Data yang dicari berada di urutan yang paling jauh maka, Proses Sequential Searching akan memakan waktu yang cukup lama. Namun, sebaliknya jika Data yang dicari berada di urutan awal / dekat maka, proses Sequential Searching akan cepat.
  • Bandingkan Data ke-1 dengan Data yang dicari
    12 == 20 → (False. Yang berarti bukan ini Data yang dicari)
  • Bandingkan Data ke-2 dengan Data yang dicari
    15 == 20 → (False. Yang berarti bukan ini Data yang dicari)
  • Bandingkan Data ke-3 dengan Data yang dicari
    9 == 20 → (False. Yang berarti bukan ini Data yang dicari)
  • Bandingkan Data ke-4 dengan Data yang dicari
    1 == 20 → (False. Yang berarti bukan ini Data yang dicari)
  • Bandingkan Data ke-5 dengan Data yang dicari
    20 == 20 → (True. Data yang dicari sudah ditemukan)
  • Proses Pencarian berhenti.

Gimana mudahkan ? Sekarang coba lanjut lagi ke Contoh kasus kedua. Misal, terdapat sejumlah Data seperti berikut.
Data : 1  9  3  22  9  12  6  73
Data yang dicari : 9

Proses Sequential Searching :
  • Pencarian dilakukan dari Data Pertama sampai Data Terakhir. Apabila terdapat Data yang sama atau duplikat maka, Data yang pertama kali ditemukanlah yang di cari.
  • Bandingkan Data ke-1 dengan Data yang dicari
    1 == 9 → (False. Data belum ditemukan)
  • Bandingkan Data ke-2 dengan Data yang dicari
    9 == 9 → (True. Data ditemukan)
  • Proses Pencarian berhenti dan menampilkan bahwa Data ditemukan.

Berikut merupakan source code untuk program Sequential Searching.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Random;

/**
 * 
 * @author Yudi Setiawan
 * 
 * Sequential Searching.
 *
 */

public class SequentialSearching
{
    public static void main(String[] args) throws IOException
    {
        //    Objek BufferedReader
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader dataIn = new BufferedReader(isr);
        
        //    Input jumlah Data
        System.out.print("Masukkan jumlah Data : ");    
        int jlh_data = Integer.parseInt(dataIn.readLine());
        
        //    Array Data sebagai penampung nilai Data
        int[] data = new int[jlh_data];
        
        //    Pilih Metode Pengisian Data
        System.out.println("\nPENGISIAN DATA");
        System.out.println("1. Di input oleh user");
        System.out.print("2. Di input oleh program --> Pilihan [1 / 2]: ");
        int isi = Integer.parseInt(dataIn.readLine());
        switch(isi)
        {
            case 1    :    //    Pengisian Data dilakukan oleh si User
                        System.out.println();
                        for(int a = 0; a < jlh_data; a++)
                        {
                            System.out.print("Data ke-"+(a+1)+" : ");        
                            data[a] = Integer.parseInt(dataIn.readLine());
                        }
                            break;
                            
            case 2    :    //    Pengisian Data dilakukan oleh program secara random
                        for(int a = 0; a < jlh_data; a++)
                            data[a] = new Random().nextInt(201);    //    Data di isi secara random dengan nilai tertinggi 200
                        
                        //    Tampilkan Data yang di isi oleh program
                        System.out.println("\nTampilkan Data");
                        for(int a = 0; a < jlh_data; a++)
                            System.out.println("Data ke-"+(a+1)+" : "+data[a]);
                        
                            break;
                            
            default    :    System.out.println("Pilihan tidak tersedia");    //    Jika pilihan menu tidak sesuai
        }
        
        //    Input Data yang dicari
        System.out.print("\nInput Data yang dicari : ");    
        int cari = Integer.parseInt(dataIn.readLine());
        
        //    Proses Sequential Searching
        boolean temu = false;        //    Variable indikator jika data sudah ditemukan
        int urutan = 0;                //    Variable untuk mengetahui urutan ke berapa data yang dicari
        for(int a = 0; a < jlh_data; a++)
        {
            System.out.print(data[a]+" == "+cari);
            if(data[a] == cari)
            {
                System.out.println("    --> Data ketemu");
                urutan = a+1;    //    Kenapa a+1 ? Karena a merupakan posisi index dimana index dimulai dari 0 ...
                temu = true;    //    Sedangkan user menghitungnya dari 1. 
                    break;
            }
            
            else
                System.out.println("    --> Data belum ketemu");
        }
        
        if(temu == true)
            System.out.println("\nData ditemukan pada urutan ke-"+(urutan));
        
        else
            System.out.println("\nData tidak ditemukan");
    }
}

Komentar