Tampilkan postingan dengan label Searching. Tampilkan semua postingan
Tampilkan postingan dengan label Searching. Tampilkan semua postingan

Rabu, 13 Mei 2015

Metode Fibonaci search


Public Class Form1
    Dim s As New Stopwatch
    Dim rd As New Random

    Function nearestfibo(ByVal n)
        Dim a As Integer = 0
        Dim b As Integer = 0
        Dim c As Integer = 0

        a = 0
        b = 1
        Do While a + b <= n
            c = a + b
            a = b
            b = c
        Loop
        nearestfibo = c
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim arr(CLng(TextBox1.Text)) As Long
        Dim lgth As Long = CLng(TextBox1.Text)
        Dim temp As Long
        Dim min As Integer = 0
        Dim t As Long
        Dim x As Long = CLng(TextBox2.Text)
        Dim fs As Long = 0
        Dim low As Integer = 0
        Dim high As Integer = 0
        Dim mid As Integer = 0

        For i As Long = 1 To lgth
            arr(i) = rd.Next(100, lgth)
        Next

        For i As Integer = 1 To lgth - 1
            min = i
            For j As Long = i + 1 To lgth
                If arr(j) < arr(min) Then
                    min = j
                End If
            Next
            If min <> i Then
                temp = arr(i)
                arr(i) = arr(min)
                arr(min) = temp
            End If
        Next

        For i As Long = 1 To lgth
            ListBox1.Items.Add(arr(i))
        Next

        s.Start()

        fs = -1
        low = 1
        high = lgth
        Do While low <= high And fs = -1
            mid = low + nearestfibo(high - low + 1) - 1
            If x = arr(mid) Then
                fs = mid
            ElseIf x < arr(mid) Then
                high = mid - 1
            Else
                low = mid + 1
            End If
        Loop

        If fs = -1 Then
            ListBox2.Items.Add("Data Tidak Ditemukan")
        Else
            ListBox2.Items.Add("Data Ditemukan Pada Index ke - " & fs)
        End If

        s.Stop()

        t = s.ElapsedMilliseconds

        Label6.Text = t & " ms"

    End Sub
End Class