Pencarian Linier/Sekuensial
Pencarian Linier atau Pencarian Sekuensial (Bah.Ingg: Linear Search atau Sequential Search) adalah pencarian data secara linier (garis lurus), artinya adalah pencarian dilakukan secara teratur (secara sekuensial) dari awal sampai akhir data (atau bisa juga dari akhir ke awal data). Berikut adalah 2 ciri penting tentang pencarian linier:
-Hanya bagus untuk dipakai pada data yang acak/tak terurut (unsorted)
-Kompleksitasnya adalah O(n)
Pencarian Biner
Pencarian Biner (Bah.Ingg: Binary Search) adalah pencarian data secara eliminasi biner berulang/terus-menerus. Maksudnya adalah pada saat pencarian data, 1 kelompok data yang sudah urut dibagi menjadi 2 subkelompok. Lalu salah satu subkelompok dieliminasi, sehingga ruang lingkup pencarian data menjadi lebih sedikit. Kemudian subkelompok yang tersisa dibagi lagi menjadi 2 subkelompok lagi, demikian dilakukan secara berulang-ulang.
Sebagai contoh, misalnya diinginkan mencari data nama Irawan di sekumpulan data nama yang sudah terurut. Apabila kelompok data ini dibagi 2, ternyata di bagian tengah terdapat nama Leny. Maka subkelompok data sesudah Leny akan dieliminasi, karena tidak mungkin nama Irawan akan terdapat pada data huruf L s/d Z. Sedangkan, subkelompok sebelum Leny, kemudian akan dibagi 2 lagi, dan diperiksa ulang. Ternyata kali ini di bagian tengah terdapat nama Gery. Maka kelompok data sebelum Gery akan dieliminasi, karena tidak mungkin terdapat data Irawan pada huruf A s/d G. Demikian seterusnya terjadi, proses eliminasi ruang lingkup pencarian data menjadi semakin sedikit secara berulang.
Berikut adalah 3 ciri penting mengenai pencarian biner:
-Hanya bisa berfungsi pada data yang sudah terurut (sorted), ini adalah syarat mutlak dari pencarian biner
-Merupakan salah satu contoh penerapan cara kerja dari konsep Divide and Conquer
-Kompleksitasnya adalah O(lg n)
Contoh 1 pencarian linier/sekuensial :
Public Class Form1
Private dataarray() As String
Private data As String
Private n As Integer = 15
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim i As Integer
For i = 0 To n - 1
If dataarray(i).Trim.ToLo wer = TextBox1.Text.Trim Then
MsgBox("Data ditemukan di posisi ke-" & i, MsgBoxStyle.Information, vbOK)
Exit For
End If
Next
If i = n Then
MsgBox("data tidak ditemukan", MsgBoxStyle.Critical, "hasil")
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
data = "absolute, absorb, abstain, abstrack, absurd, abundent, abuse, active, accelerate, accent, accept, access, accident, acclaim, accompany"
dataarray = data.Split(",")
End Sub
End Class
Public Class Form1
Private dataarray() As String
Private data As String
Private n As Integer = 15
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim i As Integer
For i = 0 To n - 1
If dataarray(i).Trim.ToLo wer = TextBox1.Text.Trim Then
MsgBox("Data ditemukan di posisi ke-" & i, MsgBoxStyle.Information, vbOK)
Exit For
End If
Next
If i = n Then
MsgBox("data tidak ditemukan", MsgBoxStyle.Critical, "hasil")
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
data = "absolute, absorb, abstain, abstrack, absurd, abundent, abuse, active, accelerate, accent, accept, access, accident, acclaim, accompany"
dataarray = data.Split(",")
End Sub
End Class
Contoh 2:
Public Class Form1
Public data As String
Public dataarray() As String
Public bilangan() As String
Public n As Integer = 20
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles
Button1.Clickbilangan = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 10}
For n = 0 To n - 1 If bilangan(n) Mod 2 = 1 Then MsgBox(bilangan(n) & "adalah bilangan ganjil", MsgBoxStyle.OkOnly) End If Next End Sub
End Class
Tidak ada komentar:
Posting Komentar