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).
pencarian biner digunakan pada data yang sudah dalam keadaan urut (contoh: Binary serach dan interpolation search).
Keuntungan dan Kerugian
Sequential Search
Sequential Search
+ jika data terletak
didepan maka waktu yang dibutuhkan minimal
- jika data yang di butuhkan besar maka waktu yang dibutuhkan maksimal
- jika data yang di butuhkan besar maka waktu yang dibutuhkan maksimal
Contoh
Binary Search
+
jika data terletak ditengah
- Jika data tidak ada
- 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
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
- 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
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
perbedaan Linear/Sequential Searching dan Binary Searching apa ya?
BalasHapusPerbedaannya dari keadaan data
Hapuspencarian sekuensial dapat digunakan walaupun data dalam keadaan acak atau tidak terurut sedangkan pencarian biner digunakan pada data yang sudah dalam keadaan urut.