阿摩線上測驗 登入

申論題資訊

試卷:108年 - 108年 臺酒 從業及從業評價 程式設計(VB.NET、JavaScript為主)#74349
科目:程式設計(VB.NET、JavaScript為主)
年份:108年
排序:0

申論題內容

第四題: 試設計 Visual Basic 程式,使程式可以進行下列陣列的二元搜尋(註:二元搜尋是一種 在有序陣列中尋找某一特定元素的搜尋法。搜尋過程從陣列的中間元素開始,如果中間元素 正好是要尋找的元素,則搜尋過程結束;如果要尋找的元素大於或者小於中間元素,則繼續 在陣列大於或小於中間元素的那一半中尋找,而且跟開始一樣從新一半的中間元素開始比 較。如果在某一步驟陣列為空,則代表找不到。這種搜尋法每一次比較都使搜尋範圍縮小一 半)。【25 分】
 [1, 10, 12, 16, 22, 30, 36, 52, 68, 72, 85, 91, 96]

詳解 (共 1 筆)

詳解 提供者:hchungw

在 Visual Basic 中執行二元搜尋的程式可以使用下面的範例代碼。這個函數接受一個有序的陣列和一個要搜尋的目標值,然後回傳目標值在陣列中的索引位置。如果目標值不存在於陣列中,則回傳 -1。
這裡是二元搜尋的 Visual Basic 實現:

Module BinarySearchModule
    Function BinarySearch(ByVal arr() As Integer, ByVal target As Integer) As Integer
        Dim low As Integer = 0
        Dim high As Integer = arr.Length - 1
        Dim mid As Integer
        
        While low <= high
            mid = low + (high - low) \ 2
            If arr(mid) = target Then
                Return mid
            ElseIf arr(mid) < target Then
                low = mid + 1
            Else
                high = mid - 1
            End If
        End While
        
        Return -1 ' 如果未找到目標值
    End Function
    Sub Main()
        Dim arr() As Integer = {1, 10, 12, 16, 22, 30, 36, 52, 68, 72, 85, 91, 96}
        Dim target As Integer = 30 ' 設定想要搜尋的目標值
        Dim result As Integer = BinarySearch(arr, target)
        If result <> -1 Then
            Console.WriteLine("元素 {0} 在陣列的索引位置是: {1}", target, result)
        Else
            Console.WriteLine("陣列中找不到元素 {0}", target)
        End If
        Console.ReadLine() ' 等待用戶響應,然後結束
    End Sub
End Module
將上面的代碼貼到 Visual Basic 的 IDE 或編輯器中,並運行它。這將執行 Main 方法,其中包含一個有序陣列和一個目標值。該程序會使用 BinarySearch 函數來搜尋目標值並打印結果。
記得,二元搜尋的前提是陣列已經是有序的。如果陣列是無序的,則需要先進行排序,然後才能使用二元搜尋。