Visual Basic - Metodo burbuja

Life is soft - evento anual de software empresarial
   
Vista:

Metodo burbuja

Publicado por juan (1 intervención) el 08/07/2016 22:52:21
tengo un problema con el metodo burbuja .
lo que pasa es que cuando quiero ordenar los numeros todos los numeros que tienen 2 dijitos se me ordenan bien pero los que tiene 1 dijito 3 dijitos no. como puedo solucionar el problema
este es el codigo:
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
Dim i, j, k, m, n, N1, ancho, alto, separah, separav, cuantos As Integer
Dim temporal As Integer
Private Sub Command1_Click()
    For i = 1 To 50
        Label5(i).Caption = Int(Rnd * 100) + 1
    Next i
End Sub
Sub Command4_Click()
    For i = 0 To (50 - 1)
        For j = (i + 1) To 50
            If (Label5(i)) > (Label5(j)) Then
                temporal = Label5(i)
                Label5(i) = Label5(j)
                Label5(j) = temporal
            End If
        Next j
    Next i
End Sub
Private Sub form_click()
    m = (5): n = (10)
    ancho = (500): alto = (500)
    Form1.Width = (ancho + separah) * n + 265 'largo del formulario
    Form1.Height = (alto + separav) * m + 3000 'ancho del formulario
    For k = 1 To m * n
        Load Label5(k)
    Next k
    Call generar
End Sub
Private Sub generar()
    For i = 1 To m
        For j = 1 To n
            k = (i - 1) * n + j
            Label5(k).Width = ancho
            Label5(k).Height = alto
            Label5(k).Left = (j - 1) * (ancho + separah) + 110
            Label5(k).Top = (i - 1) * (alto + separav) + 200
            Label5(k).Visible = True
            Label5(k).BackColor = QBColor(0)
        Next j
    Next i
End Sub
Private Sub Form_Load()
    separah = 200:: separav = 100
    Randomize (Time())
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Metodo burbuja

Publicado por Juan Gilberto (278 intervenciones) el 09/07/2016 18:52:59
Lo que pasa es que estas ordenando Strings... modifica tu codigo a convertir en numerico el contenido de los labels
podrias usar el estatuto VAL
Ejemplo:
If Val(Label5(i)).Caption) > Val(Label5(j).Caption) Then
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar