|
下面代码,是我根据二分法规则写的 二分法查询过程自定义函数代码,
可以通过VBE窗口 F8逐步观察,用来理解二分法规则的具体步骤。
(但应该没有很大的实际使用价值,因为Lookup函数已经够好了)
- Sub VLCfm()
- ReDim r$(25)
- For i = 0 To 25
- r(i) = Chr(97 + i) '生成26个字符对应的一维数组r
- Next
-
- ReDim b(25)
- For i = 0 To 25
- b(i) = VL(Chr(97 + i), r) '用我写的通用二分法检查比较自定义函数返回对应序号值
- Next
- MsgBox Join(b, vbCr)
- End Sub
- Function VL&(x$, r) '这是我根据二分法查询规则写的二分法查询过程代码
- Dim h&, l&, m&, t&, q&, y$
- m = UBound(r): h = m + 1: l = 0: t = l + (h - l) \ 2
-
- Do
- y = r(t)
- If x < y Then
- If t = 0 Then VL = -1: Exit Do
- h = t: t = l + (h - l) \ 2
- Else
- If x = y Then
- q = t
- For t = t + 1 To h - 1
- y = r(t): If x = y Then q = t Else Exit For
- Next
- VL = q: Exit Do
- End If
- If t = h - 1 Then VL = t: Exit Do
- p = t: l = t: t = l + (h - l) \ 2
- End If
- Loop
- End Function
复制代码 |
|