对于一个三位数的字符串数字,比如"231"
想把组成这个字符串的三个字符,按数字的大小排出来
 
结果为:"123" 谁有最简单的算法,给分!

解决方案 »

  1.   

    Private Sub Command1_Click()
    Dim tmp As String
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    a = Text1.Text
    b = Text2.Text
    c = Text3.TextDo Until a >= b And b >= c
    If b <= c Then
        tmp = b
        b = c
        c = tmp
    End If
    If a <= b Then
        tmp = a
        a = b
        b = tmp
    End If
    LoopText4.Text = CStr(c) + CStr(b) + CStr(a)
    End Sub
      

  2.   

    Private Sub Command1_Click()
            Text2.Text = sort(Text1.Text)
    End Sub
    Private Function sort(ByVal num As String) As String
            Dim a(2) As Integer
            Dim tmp As Integer
            
            For i = 0 To 2
                a(i) = Mid(num, i + 1, 1)
            Next
            
            For i = 0 To 2
                For j = i + 1 To 2
                    If a(i) > a(j) Then
                       tmp = a(i)
                       a(i) = a(j)
                       a(j) = tmp
                    End If
                Next
            Next
            For i = 0 To 2
                sort = sort & a(i)
            Next
    End Function
      

  3.   

    Private Sub Form_Activate()
        Randomize Timer
        Dim a(1 To 10000) As Double
        Dim b(1 To 10000) As Double
        Dim dang As Double
        Dim ca As Integer
        dang = 1
        
        For i = 1 To 10000
            a(i) = Format(Rnd(), "0.000000")
            List1.AddItem a(i)
        Next
        
        For i = 1 To 10000
            For f = 1 To 10000
                If a(f) < dang Then
                    dang = a(f)
                    'a(f) = 1
                    ca = f
                End If
            Next
            b(i) = dang
            dang = 1
            a(ca) = 1
        Next
        
        For i = 1 To 10000
            a(i) = b(i)
            List2.AddItem a(i)
        Next
        
        
    End Sub
    不冒泡和插入都快