En que consiste el mtodo, consiste en la ordenacin un arreglo de n elemento mediante la comparacin de los elementos adyacentes si estn desordenados se intercambian de lugar, las comparaciones se realizan hasta que se encuentre todo el arreglo de elementos ordenados. CONCEPTOS BASICOS Arreglo (Array).- Son estructuras de datos del mismo tipo ordenados por que se almacenan de manera consecutiva en la memoria. Ejemplo: A=[5,7,8,0] Es un arreglo con 4 elementos de tipo numrico entero, podemos decir que es un arreglo A[4], podemos acceder de manera individual a cada elemento de un arreglo indicando la posicin en la que se encuentra, ejemplo: A(0)=5, A(1)=7 , A(2)= 8, A(3)=0 De esta manera podemos modificar el valor de cada elemento de manera individual indicando la posicin dentro del arreglo. Registro Auxiliar (AUX o Temporal).- En esta variable copiaremos el valor de otra variable para almacenarlo de manera temporal, es utilizada en casos donde queremos modificar la misma variable pero deseamos conservar su valor. X1= 5; Tenemos el valor 5 a la variable X1 Aux= X1; Si deseamos mantener ese valor y no perderlo al modificar la variable lo guardamos aqu X1=X1( Que vale 5 ) + 7 ; Ahora X1 tendr el valor 5+7=12 X2= Aux ; Retomamos el valor almacenado X1 y se lo asignamos a X2= 5
ESTRUCUTRAS FOR.- Es una estructura de control que nos permite repetir o realizar una determinada cantidad de veces una instruccin y generalmente evala una variable para determinar la cantidad de veces que se repetir For I =0 (donde inicializa en 0) to numero asignado (Hasta n. veces, evala si est dentro de los argumentos, si cumple la condicin ejecuta las instrucciones que estn dentro de la estructura FOR) Instrucciones a ejecutarse next
Hecho por Ismael Crdenas Materia: Software ESTRUCTURA IF.- Si se cumple la condicin establecida ejecuta las lneas de cdigo, si no se cumple no realiza nada o salta la estructura. IF A=B THEN C=5 ENDIF La manera en cmo funciona el algoritmo de este mtodo es la siguiente
Inicio Ingresamos los datos del arreglo y almacenamos Inicializamos la variable auxiliar con valor = 0, se proceden a los FOR anidados IF A(j) > A(j+1) aux = Array(j) Array(j) = Array(j + 1) Array(j + 1) = aux J = nmero de elementos - 2 I = nmero de elementos - 1 IMPRIMIOS EL ARREGLOS ORDENADO FIN NO NO NO SI SI SI Hecho por Ismael Crdenas Materia: Software EJEMPLO.- PROGRAMA VISUAL BASIC PARA 4 ELEMENTOS
Public Class Form1
'Evento se produce cuando el botos de salir es presionado Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click End 'Instruccion finaliza la ejecucion del programa
End Sub
'Evento se produce cuando presionamos el boton de ordenar Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Valores enteros obtenidos de los textboxs Dim A0 = Val(TextBox1.Text) Dim A1 = Val(TextBox2.Text) Dim A2 = Val(TextBox3.Text) Dim A3 = Val(TextBox4.Text)
Clear_list() ' Mando a llamar la funcion creada para limpiar los listbox donde se imprimen los arreglos
'Declaracion del arreglo de 4 elementos desde 0 hasta 3 como tipo entero Dim Array(3) As Integer
'Imprime los valores dentro de un listbox para que visualice el arreglo desordenado For num As Integer = 0 To Array.Length - 1 arreglo.Items.Add(Array(num)) Next
'Inicializa la variable auxiliar con valor= 0 para que no modifique ningun valor y este por decirlo vacia 'listo para recibir un valor Dim aux As Integer = 0
' FOR para I en el cual nos permite definir el numero de pasadas necesarias For i As Integer = 0 To Array.Length - 1
'FOR para J el cual permite ir avanzando dentro del arreglo apra realizar las comparaciones For j As Integer = 0 To (Array.Length - 2)
'evaluamos si cumple la condicion que es mayor que el siguiente elemento If Array(j) > Array(j + 1) Then aux = Array(j) ' Guardamos el valor para no perderlo Hecho por Ismael Crdenas Materia: Software Array(j) = Array(j + 1) ' Reasigana el valor mas pequeo al elemento anterior es decir lo recorre a la izquierda Array(j + 1) = aux ' El elemento mayor guardado en Auxiliar lo acomoda de lado derecho
End If
Next j Next i
'Imprime el nuevo arreglo con los datos ordenados de menos a mayor For num3 As Integer = 0 To Array.Length - 1 ordenado.Items.Add(Array(num3))
Next
End Sub
' limpia los listbox Private Sub Clear_list() arreglo.Items.Clear() ordenado.Items.Clear()
End Sub
End Class
WINDOWS FORM
Hecho por Ismael Crdenas Materia: Software EXPLIACION DEL FUNCIONAMIENTO Si tenemos 3 numeros A(0)= 10, A(1)= 2 Y A(2)= 50, el numero de elementos es 3, para evaluar el numero de recorrimientos internos en el for de J es N-2 donde N es el numero de elementos entonces recorreremos 1 posicion. A=[16,2,50] N=3 Iteraciones=3-2 = 1 ESTRUCUTRA DE LA EVALAUACION 'FOR para I en el cual nos permite definir el nmero de pasadas necesarias For i= 0 hasta N -1 (Nmero de elementos -1)
'FOR para J el cual permite ir avanzando dentro del arreglo apra realizar las comparaciones For j= 0 Hasta N-2 (Numero de elementos 2, iteraciones necesarias)
'evaluamos si cumple la condicin que es mayor que el siguiente elemento
If Array(j) > Array(j + 1) Then aux = Array(j) ' Guardamos el valor para no perderlo Array(j) = Array(j + 1) ' Reasigana el valor mas pequeo al elemento anterior es decir lo recorre a la izquierda Array(j + 1) = aux ' El elemento mayor guardado en Auxiliar lo acomoda de lado derecho
End If
Next j Next i
ENTONCES SE EVALUARA EN LOS CICLOS FOR FOR I=0 hasta N -1 (Es decir se evaluara desde 0 hasta 3-1=2 ) FOR J=0 hasta N-2( Es decir se evaluara desde 0 hasta 3-2=1 ) NOTA.- Por que en el segndo FOR para J (El cual es utilizado para recorrer los elementos del arreglo) se le resta 2 al numero de elemento, es por que por ejemplo en un arreglo de 4 elementos A=[1,2,7,6] Se evaluaran siempre dos elementos comenzando de izquierda a derecha por lo tanto el numero de recorrimientos posibles es la cantidad de elementos en este caso 4, menos los elementos que se compararan los primeros dos por eso es que le restamos dos.
Hecho por Ismael Crdenas Materia: Software IF (CONDICION) RECORRE LOS VALORES (Solamente si se cumple la condicin) ENDIF NEXT NEXT
EXPLICACION CON NUMEROS CICLOS FOR VARIABLES VECTOR I J AUX A(J) A(J+1) A(0) A(1) A(2) 0 0 0 16 2 16 2 50
Se evalaua si A(j) = 16 > A(j+1)= 2, donde J es igual a 0, como se cumple la condicion del IF se procede a cambiar los valores recorriendo el mayor hacia la derecha. AUX= A(J) =16; Guarda ese valor, para no perderlo al recorrer el menor a la posicion de la izquierda A(J)= A(J+1) =2 ; El valor menor que se encontraba a la derecha es colocado en la posicin de la derecha. Esto cambia el valor que se encontraba antes de 16 a un valor 2.
A(J+1)= AUX; Al valor que se encontraba en A(J+1) que antes era 2 y se movi de lugar ahora es un espacio vaco con valor 0 el cual es ocupado por el valor del nmero mayor en este caso 16. Recordemos que J tiene un valor 0 por lo tanto A(j+1)=A(0+1) El cual indica la posicin del elemento. CICLOS FOR VARIABLES VECTOR I J AUX A(J) A(J+1) A(0) A(1) A(2) 0 0 16 2 16 2 16 50
Si recordamos el nmero de iteraciones: N=3 Numero de lelemetos Iteraciones=3-2 = 1 Se observa que nomas necesitamos una iteracion es decir repetir el recorriemito del For para J una sola VEZ.