• 运用了指针技术的快速排序模块。指针操作是交换字符串用。

    Option Explicit
    
    Private Declare Sub GetMem4 Lib "msvbvm60.dll" (ByRef SrcRef As Long, ByRef DstRef As Long)
    
    Public Sub SwapString(a As String, b As String)
        Dim pT As Long, pA As Long, pB As Long
        pT = StrPtr(a): pA = VarPtr(a): pB = VarPtr(b)
        
        GetMem4 ByVal pB, ByVal pA
        GetMem4 pT, ByVal pB
    End Sub
    
    Public Sub QuickSortStr(ByRef arr() As String, ByVal l As Long, ByVal r As Long)
        Dim i As Long, j As Long
        Dim x As String
        
        i = l: j = r
        x = arr((l + r) \ 2)
        
        Do
            While arr(i) < x: i = i + 1: Wend
            While arr(j) > x: j = j - 1: Wend
            If i <= j Then
                SwapString arr(i), arr(j)
                i = i + 1: j = j - 1
            End If
        Loop Until i > j
        
        If i < r Then Call QuickSortStr(arr, i, r)
        If l < j Then Call QuickSortStr(arr, l, j)
    End Sub
    
    Public Sub QuickSortLng(ByRef arr() As Long, ByVal l As Long, ByVal r As Long)
        Dim i As Long, j As Long
        Dim x As Long, y As Long
        
        i = l: j = r
        x = arr((l + r) \ 2)
        
        Do
            While arr(i) < x: i = i + 1: Wend
            While x < arr(j): j = j - 1: Wend
            If i <= j Then
                y = arr(i): arr(i) = arr(j): arr(j) = y
                i = i + 1: j = j - 1
            End If
        Loop Until i > j
        
        If i < r Then Call QuickSortLng(arr, i, r)
        If l < j Then Call QuickSortLng(arr, l, j)
    End Sub
  • 9999999999999999999
     88888888888888888
      777777777777777
       6666666666666
        55555555555
         444444444
          3333333
           22222
            111
             0

    输出如上:

    代码如下:

    Dim i As Integer
    For i = 9 To 0 Step -1
        Print Space(9 - i);String(i*2+1,Trim(i))
    Next

    同样 这是给别人回答的一个问题(百度知道)。中间还有小插曲;原来我写String(Trim(i),i*2+1),后来怎么搞总是乱码;奇怪死了。一看 原来是参数写反了……(我是答案输好以后复制进VB检验的)

  • 某日在BaiduZhidao上面看到一个VB的问题,要求:

    “ 

    当在text1中输入1,屏幕输出:
    1
    当在text1中输入2,屏幕输出:
    1 2
    4 3
    当在text1中输入3,屏幕输出:
    1 2 3
    8 9 4
    7 6 5
    当在text1中输入4,屏幕输出:
    1  2  3  4
    12 13 14 5
    11 16 15 6
    10 9  8  7

    ... ...
    以此类推。。。

    于是我根据人们的思维方式用VB写了一种解决办法。

    代码可读性比较高,不过呢,精简程度不怎么样~~代码执行效率还可以。