• VB:二分法查找


    VB:二分法查找

    '二分查找算法
    Private Sub Command1_Click()
        Dim i%, m%, n%
        Dim x(1 To 10) As Single
        For i = 1 To 10
            x(i) = Val(InputBox("请输入"))
        Next i
        Call bubbleSort(x)
        For i = LBound(x) To UBound(x) 'LBound(x)和UBound(x)是用于获取数组x的下界和上界的函数。LBound(x)返回数组x的最小索引(即下界),UBound(x)返回数组x的最大索引(即上界)
            Print x(i); '加逗号的目的是其显示为一行数据
        Next i
        Print '\n'
        For i = 1 To 5
        n = Val(InputBox("请输入你要查找的值"))
        m = binarySearch(x, n)
        If (m = 1) Then
            Print "已找到"
        Else
            Print "未找到"
        End If
        Next i
    End Sub
    Function binarySearch(arr!(), key) As Integer
        Dim low%, high%, mid%, p As Boolean
        p = False
        low = LBound(arr)
        high = UBound(arr)
        Do While (low <= high)
            mid = (low + high) \ 2
            If arr(mid) = key Then
                p = True
                binarySearch = 1
                Exit Do
            ElseIf arr(mid) < key Then
                low = mid + 1
            Else
                high = mid - 1
            End If
        Loop
        If p = False Then binarySearch = -1
    End Function
    Sub bubbleSort(arr!()) '通过arr!()表示arr是一个数组,并且!()表示该数组是在子程序调用时传递给它的
        Dim i%, j%
        For i = UBound(arr) To LBound(arr) Step -1 '这里的意思是从最大索引数10开始递减到最小索引数1
            For j = 1 To i - 1 'i到了1就会由于这个语句1无法正着到0,所以首先退出这里的循环
                If arr(j) > arr(j + 1) Then
                    Call mySwap(arr(j), arr(j + 1))
                End If
            Next j
        Next i '当最后一步退出上一个循环后,i到了这个语句变为0,这样就不符合从10到1,也就退出了最外层的循环。
    End Sub
    Sub mySwap(ByRef a, ByRef b)
        Dim c As Variant
        c = a
        a = b
        b = c
    End Sub
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    在这里插入图片描述

  • 相关阅读:
    信号处理与 signal.h 库
    002.Breakfast or lunch?
    48页数字政府智慧政务一网通办解决方案
    linux内核中的SPI
    【C语言趣味教程】(1) 深入浅出 HelloWorld:通过 HelloWorld 展开教学 | 头文件详解 | main 函数详解
    网络原理之 TCP解释超详细!!!
    零基础学Python:Numpy用法
    L1-018 大笨钟 C++解法
    设计模式【1】-- 单例模式
    鸿蒙路由出错
  • 原文地址:https://blog.csdn.net/wanglongjiayou/article/details/132858979