Una mano por fa
Publicado por Josnathan (1 intervención) el 26/03/2011 01:30:21
Buenas Tengo que hacer un programa con tres botones y tres listas..
el primer boton me muestra una lista de numeros
el segundo me los organiza
y el tercero me muestra al azar uno de los numeros de la lista. (busqueda Binaria)
ya los primeros dos los tengo listos, pero no logro unir el algoritmo de la busqueda binaria con los archivos de la lista, si alguien me puede dar una mano se lo agradeceria..
aqui el codigo completo:
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Dim x, p, c, h, a, Listadatos(12) As Integer
Dim midv As Integer = 0
Dim value As Integer
Dim low As Integer
Dim high As Integer
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
' Call Randomize
Call lstOriginal.Items.Clear()
System.Array.Clear(Listadatos, 0, Listadatos.Length)
Listadatos(0) = 17
Listadatos(1) = 20
Listadatos(2) = 3
Listadatos(3) = 250
Listadatos(4) = 7
Listadatos(5) = 18
Listadatos(6) = 360
Listadatos(7) = 277
Listadatos(8) = 5
Listadatos(9) = 4
Listadatos(10) = 23
Listadatos(11) = 6
Listadatos(12) = 18
For x = LBound(Listadatos) To UBound(Listadatos)
' Listadatos(x) = 1 + Int(100 * Rnd())
Call lstOriginal.Items.Add(CStr(Listadatos(x)))
Next x
Call lstSorted.Items.Clear()
Call lstBusq.Items.Clear()
Command2.Enabled = True
Command3.Enabled = False
End Sub
Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
Call lstSorted.Items.Clear()
Call BubbleSort(Listadatos)
For x = 1 To UBound(Listadatos)
Call lstSorted.Items.Add(CStr(Listadatos(x)))
Next x
Command3.Enabled = True
End Sub
Public Sub BubbleSort(ByRef Lista() As Integer)
For p = 1 To (UBound(Lista) - 1)
For c = 1 To (UBound(Lista) - 1)
If Lista(c) > Lista(c + 1) Then
h = Lista(c)
Lista(c) = Lista(c + 1)
Lista(c + 1) = h
End If
Next c
Next p
End Sub
Private Sub Command3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command3.Click
Call lstBusq.Items.Clear()
BinarySearch(Listadatos)
Call lstBusq.Items.Add(x)
End Sub
Private Sub Command4_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command4.Click
If MsgBox("Realmente deseas salir?", vbInformation Or vbYesNo) = vbYes Then
MsgBox("Vuelva Pronto")
End
End If
End Sub
Private Function BinarySearch(ByRef x() As Integer) As Integer
While (low <= high)
midv = (low + high) / 2
If (x)(midv > value) Then
high = midv - 1.0
ElseIf (x)(midv < value) Then
low = midv + 1
Else
Return midv
End If
End While
End Function
Private Sub Frame1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Frame1.Enter
Command2.Enabled = False
Command3.Enabled = False
End Sub
End Class
Gracias de Antemano
el primer boton me muestra una lista de numeros
el segundo me los organiza
y el tercero me muestra al azar uno de los numeros de la lista. (busqueda Binaria)
ya los primeros dos los tengo listos, pero no logro unir el algoritmo de la busqueda binaria con los archivos de la lista, si alguien me puede dar una mano se lo agradeceria..
aqui el codigo completo:
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Dim x, p, c, h, a, Listadatos(12) As Integer
Dim midv As Integer = 0
Dim value As Integer
Dim low As Integer
Dim high As Integer
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
' Call Randomize
Call lstOriginal.Items.Clear()
System.Array.Clear(Listadatos, 0, Listadatos.Length)
Listadatos(0) = 17
Listadatos(1) = 20
Listadatos(2) = 3
Listadatos(3) = 250
Listadatos(4) = 7
Listadatos(5) = 18
Listadatos(6) = 360
Listadatos(7) = 277
Listadatos(8) = 5
Listadatos(9) = 4
Listadatos(10) = 23
Listadatos(11) = 6
Listadatos(12) = 18
For x = LBound(Listadatos) To UBound(Listadatos)
' Listadatos(x) = 1 + Int(100 * Rnd())
Call lstOriginal.Items.Add(CStr(Listadatos(x)))
Next x
Call lstSorted.Items.Clear()
Call lstBusq.Items.Clear()
Command2.Enabled = True
Command3.Enabled = False
End Sub
Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
Call lstSorted.Items.Clear()
Call BubbleSort(Listadatos)
For x = 1 To UBound(Listadatos)
Call lstSorted.Items.Add(CStr(Listadatos(x)))
Next x
Command3.Enabled = True
End Sub
Public Sub BubbleSort(ByRef Lista() As Integer)
For p = 1 To (UBound(Lista) - 1)
For c = 1 To (UBound(Lista) - 1)
If Lista(c) > Lista(c + 1) Then
h = Lista(c)
Lista(c) = Lista(c + 1)
Lista(c + 1) = h
End If
Next c
Next p
End Sub
Private Sub Command3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command3.Click
Call lstBusq.Items.Clear()
BinarySearch(Listadatos)
Call lstBusq.Items.Add(x)
End Sub
Private Sub Command4_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command4.Click
If MsgBox("Realmente deseas salir?", vbInformation Or vbYesNo) = vbYes Then
MsgBox("Vuelva Pronto")
End
End If
End Sub
Private Function BinarySearch(ByRef x() As Integer) As Integer
While (low <= high)
midv = (low + high) / 2
If (x)(midv > value) Then
high = midv - 1.0
ElseIf (x)(midv < value) Then
low = midv + 1
Else
Return midv
End If
End While
End Function
Private Sub Frame1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Frame1.Enter
Command2.Enabled = False
Command3.Enabled = False
End Sub
End Class
Gracias de Antemano
Valora esta pregunta


0