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


在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半月斩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值