STRUKTUR DATA - (Sequential Search dan Binary Search)

Assalamualaikum Wr.Wb

Hai teman teman kali ini saya akan membahas apa itu Searching dan macam macam searching

Searching adalah pencarian data dengan cara menelusuri data-data tersebut. Tempat pencarian data dapat berupa array dalam memori(pencarian internal), bisa juga pada file pada external storage(pencarian external).

Ada dua macam teknik pencarian yaitu Sequential Search dan Binary Search. Perbedaan dari dua teknik ini terletak pada keadaan data. Pencarian sekuensial digunakan apabila data dalam keadaan acak atau tidak terurut (contoh: sequential search).
pencarian biner digunakan pada data yang sudah dalam keadaan urut (contoh: Binary serach dan interpolation search).

Keuntungan dan Kerugian
Sequential Search
+ jika data terletak didepan maka waktu yang dibutuhkan minimal
- jika data yang di butuhkan besar maka waktu yang dibutuhkan maksimal
Contoh




Binary Search
+ jika data terletak ditengah
- Jika data tidak ada


Sequential Search
  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. 

Contohnya seperti mencari alamat rumah di perumahan. Maka kita akan mencari dengan urut mulai dari blok a sampai blok yang kita inginkan.

Skrip sequential search

while(kriteria != Data[indeks])
    {
        indeks ++
    }
        Ketemu = Data[indeks]

Keterangan :
-          Kriteria adalah angka yang akan kita cari
-          Data adalah nama dari array
-          Indeks adalah letak dari data yang akan kita bandingkan

Gambar 1 adalah contoh array yang sudah diisi dengan sebuah data, dan kita harus mencari sebuah data. Bagaimana caranya ya?.
oke disini kita akan membahas cara penulisan begitupun caramencari sebuah data ang kita inginkan
Cara penulisan :
1.      Kita harus memberi nama array tersebut. Array di atas kita namai dengan x
2.      Kita harus tau kriteria apa yang akan kita cari
3.      Operator pembandingnya adalah != artinya adaah tidak sama dengan
4.      Cara penulisan
kriteria !=  x[indeks] = y (jika nilai kriteria tidak sama dengan hasil indeks) = indeks ++
kriteria !=  x[indeks] = T (jika nilai kriteria sama dengan hasil indeks) = katemu[indeks]
ket :
-          Indeks ++ akan digunakan jika y , maka indeks ditambah 1
-          Namum jika T , itu sudah ketemu hasilnya
-           
Soal dari gambar 1 adalah carilah nilai 29 dari array x


100
10
29
150
120

29 != x[0] = y = indeks ++
29 != x[1] = y = indeks ++
29 != x[2] = T = ketemu x[2]

 Maksudnya adalah :

29 != x[0] = y = indeks ++
kriteria 29 akan diibandingkan dengan indeks ke 0, karena indeks ke 0 nilainya adalah 100 maka indeks ke 0 kita tulis y. dan indeks ++ (0+1) jadi indeks setelah ini adalah 1




29 != x[1] = y = indeks ++
kriteria 29 akan diibandingkan dengan indeks ke 1, karena indeks ke 1 nilainya adalah 10 maka indeks ke 1 kita tulis y. dan indeks ++ (1+1) jadi indeks setelah ini adalah 2


  
29 != x[2] = T = ketemu x[2]
kriteria 29 akan diibandingkan dengan indeks ke 2, karena indeks ke 2 nilainya adalah 29 maka indeks ke 2 kita tulis T dan dapat ditulis ketemu x[2], karena kriteria ada di indeks ke 2
Binary Search
Salah satu syarat agar binary search dapat dilakukan adalah data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, binary search tidak dapat dilakukan.

Binary search dengan INDEKS GANJIL

 



Lalu bagaimana mencarinya? Oke disini kita akan membahas bagai mana cara mencarinya dan bagaimana peulisannya
Cara mencari :
1.      Pertama kita harus menamai array itu. Array di atas kita namai dengan array x
2.      Kita harus tau  indeks awal dan akhir ( kalau pada gambar 2 indeks pertama adalah 0 dan indeks terakhir adalah 6)
3.      Cara pengerjaan adalah indeks awal dan akhir ditambah lalu dibagi 2
4.      Jika dalam pengerjaan itu belum ketemu hasilnya maka kita membagi yang ada di sebelah kanan atau kiri, dengan catatan
-  akan pindah ke kiri jika nilai kriteria lebih kecil di bandingkan nilai indeks tengah
- akan kekanan jika nilai kriteria lebih besar dari pada nilai indeks tengah

Dari gambar2 kita disuruh mencari nilai 45 maka caranya adalah

 n = 45
0+6 = 6/2 = 3 || x[3] = 45, Maka 16 terletak di indeks ke 2


Maksudnya adalah :
-          n adalah kriteria yang akan kita cari
-          0+6 di dapatkan dari (0 dalah indeks pertama dan 6 dari indeks terakhir), sedangkan dibagi 2 adalah rumus yang harus digunakan
-          x[3] = 45 maksudnya adalah hasil dari 0+6 dibagi 2 adalah 3 , 3 itu adalah indek dan indeks 3 nilainya adalah 45. Berarti nilai 45 ada di indeks ke 3



Soal :
1.    Carilah nilai 17 dari gambar 2
2.     Carilah nilai 50 dari gambar 2
Jawab :

16
17
23
45
50
78
99

1.       n = 17
   0+6 = 6/2 = 3 || x[3] = 45
    If(17 <= 45), ambil sisi kiri

0
1
2
3
4
5
6
16
17
23
45
50
78
99

0+2= 2/2 = 1 || x[1] = 17, Maka 17 terletak di indeks ke 1

Maksudnya adalah :
-          n adalah kriteria yang akan kita cari
-          0+6 di dapatkan dari (0 adalah indeks pertama dan 6 dari indeks terakhir), sedangkan dibagi 2 adalah rumus yang harus digunakan
-          x[3] = 45 maksudnya adalah hasil dari 0+6 dibagi 2 adalah 3 , x[3] itu adalah indek dan indeks 3 nilainya adalah 45.
-          If(17 <= 45), ambil sisi kiri. Karena nilai 17 lebih kecil dari 45 maka kita ambil sebelah kiri. Jadi kita harus menuliskan element yang ada di sebelah kiri indeks 3.
16
17
23
-          0+2 di dapatkan dari (0 adalah indeks pertama dan 2 dari indeks terakhir), sedangkan dibagi 2 adalah rumus yang harus digunakan
-          x[1] = 17 maksudnya adalah hasil dari 0+2 dibagi 2 adalah 1 , x[1] itu adalah indek dan indeks 1 nilainya adalah 17. Berarti nilai 17 ada di indeks ke 1


2.       n = 50
  0+6 = 6/2 = 3 || x[3] = 45
  If(50 >= 45), ambil sisi kanan


0
1
2
3
4
5
6
16
17
23
45
50
78
99

  4+6= 10/2 = 5 || x[5] = 78
  If(50>=78), ambil sisi kiri

3+5= 8/2 = 4 || x[4] = 50, Maka 50 terletak di indeks ke 4



Binary Search dengan INDEKS GENAP
Terus bagaimana jika jumlah indeks genap ? Apa pengerjaannya sama?
Oke kita akan coba jika jumlah indeks genap

Sebenarnya pengerjaan antara indeks ganjil dan genap sama saja. Hanya saja hasil dari pembagian bernilai decimal, maka kita harus membulatkan kebawah.
  

Contoh :


Carilah nilai 23 dari  dari gambar 3
Jawab :

n = 23
0+7 = 7/2 = 3,5 (dibulatkan kebawah) || x[3] = 23, Maka 23 terletak di indeks ke 3



Soal :
1.       carilah nilai 35 dari gambar 3
2.       carilah nilai 16 dari gambar 3

jawab :

0
1
2
3
4
5
6
7
  12
14
16
23
25
35
56
77
1.      1. n = 35
    0+7 = 7/2 = 3,5 (dibulatkan kebawah) || x[3] = 23
    If(35>=23), ambil sisi kanan

0
1
2
3
4
5
6
7
  12
14
16
23
25
35
56
77

4+7 = 11/2 = 5,5 (dibulatkan kebawah) || x[5] = 35, Maka 35 terletak di indeks ke 5


2.       n = 16
   0+7 = 7/2 = 3,5 (dibulatkan kebawah) || x[3] = 23
   If(16<=23), ambil sisi kiri

0
1
2
3
4
5
6
7
  12
14
16
23
25
35
56
77

  0+2 = 2/2 = 1|| x[1] = 14

  If(16>=14), ambil sisi kanan


 1+3= 4/2 = 2 || x[2] = 16, Maka 16 terletak di indeks ke 2

sekian dulu ya pembahasan tentang array. Semoga bermanfaat  ^V ^
wassalamualaikum Wr.Wb


Komentar

  1. perbedaan Linear/Sequential Searching dan Binary Searching apa ya?

    BalasHapus
    Balasan
    1. Perbedaannya dari keadaan data
      pencarian sekuensial dapat digunakan walaupun data dalam keadaan acak atau tidak terurut sedangkan pencarian biner digunakan pada data yang sudah dalam keadaan urut.

      Hapus

Posting Komentar

Postingan populer dari blog ini

Belajar JavaScript --> Menghitung Rata-Rata Nilai

STRUKTUR DATA - Tree