Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
1. Métodos de Ordenamientos
Estructura de datos
Unidad V
Método de ordenamiento
Rubi veronica chimal Cuxin.
2. Métodos de Ordenamientos
Introducción
En esta unidad aplicaremos el método de búsqueda pertinente en la solución de un
problema real. Podemos consultar en fuentes bibliográficas los diversos algoritmos
de búsqueda y analizarlos. Al igual la Implementación en un lenguaje de
programación los métodos de búsqueda para un conjunto de n datos generados
aleatoriamente de igual forma será un método de aprendizaje hacer una
comparación de los métodos que se verán.
3. Métodos de Ordenamientos
Burbuja.
El método de ordenación por intercambio directo o método de la burbuja, es el más
simple y consiste en comparar dos elementos adyacentes para determinar si se
realiza un intercambio entre los mismos, esto en caso de que el primero sea mayor
que el segundo (forma ascendente) o el caso de que el primero sea menor que el
segundo (forma descendente).
El primer procedimiento del método de la burbuja es:
1. Generar un ciclo que inicie desde uno hasta el número de elementos del
arreglo.
2. Generar un segundo ciclo dentro del anterior que inicie desde cero hasta el
número de elementos del arreglo menos dos.
3. Dentro del segundo ciclo debe existir una comparación que determina el tipo
de ordenamiento (ascendente o descendente) entre el primer elemento
(posición generado por el segundo ciclo) y el segundo elemento (el que
le sigue), si la respuesta a la condición es verdadera se realiza un
intercambio entre los dos elementos.
4. Para realizar el intercambio se genera un almacenamiento temporal, el cual
guarda el dato del primer elemento, el segundo elemento toma el lugar del
primero y en el lugar del segundo se coloca lo que contiene el
almacenamiento temporal.
Una vez que los ciclos terminan la estructura debe quedar ordenada de forma
ascendente o descendente, pero este procedimiento es considerado como el pero
de los casos ya que si el número de elementos de la estructura es de 100, se tienen
que realizar 9900 comparaciones entes de terminar la ejecución del método.
Un segundo procedimiento del método de la burbuja es:
1. Generar un ciclo que inicie desde cero hasta el número de elementos menos
dos.
2. Generar un segundo ciclo desde el valor del ciclo anterior mas uno hasta el
número de elementos menos uno;
3. Dentro del segundo ciclo debe existir una comparación que determina el tipo
de ordenamiento (ascendente o descendente) entre el primer elemento
(posición generada por el primer ciclo) y el segundo elemento (posición
generada por el segundo ciclo), si la respuesta a la condición es verdadera
se realiza un intercambio entre los dos elementos.
4. Para realizar el intercambio se genera un almacenamiento temporal, el cual
guarda el dato del primer elemento, el segundo elemento toma el lugar del
primero y en el lugar del segundo se coloca lo que contiene el
almacenamiento temporal.
4. Métodos de Ordenamientos
Una vez que los ciclos terminan la estructura debe quedar ordenada, la diferencia
con el procedimiento anterior radica en el número de comparaciones y posibles
intercambios que se presentan, en este segundo procedimiento, es menor ya que
cada pasada que se le da al arreglo se realiza una comparación menos que en la
pasada anterior.
Un tercer procedimiento del método de la burbuja es el siguiente:
1. Generar un ciclo que inicie desde uno hasta el número de elementos menos
uno.
2. Generar un segundo ciclo que inicie desde el número de elementos menos
uno y mientras que ese valor sea mayor o igual al del ciclo anterior (con
decrementos).
3. Dentro del segundo ciclo debe existir una comparación que determina el tipo
de ordenamiento (ascendente o descendente) entre el primer elemento
(posición generada por el segundo ciclo) y el segundo elemento (posición
generada por el segundo ciclo menos uno), si la respuesta a la condición es
verdadera se realiza un intercambio entre los dos elementos.
4. Para realizar el intercambio se genera un almacenamiento temporal, el cual
guarda el dato del primer elemento, el segundo elemento toma el lugar del
primero y en el lugar del segundo se coloca lo que contiene el
almacenamiento temporal
Este tercer procedimiento es muy similar al anterior con la diferencia que el
elemento que va quedando es su lugar el primero no el último como en el caso
anterior.
Funcionamiento de los algoritmos de ordenamiento
Quick sort
Dados los siguientes números
Para implementar este método se debe de recibir como argumentos el vector con
los números, la posición inicial y la posición final del vector (vec,
inicio(0),final(9)). Las posiciones recibidas de inicio y final se deben de respaldar
porque sus valores van cambiar durante la ejecución del método. Los respaldos los
llamaremos Izq y Der donde Izq tiene el valor recibido en inicio y Der el valor recibido
de final. Estas variables se representan en el vector siguiente como las posiciones
inicial y final del vector respectivamente. También se debe de sacar un pivote que
esta dado por la suma de la posición inicial, final y dividida entre dos.
Izq=0;inicio=0;
5. Métodos de Ordenamientos
Der=9;final=9;
Pospivote=(inicio+final)/2=(0+9)/2=4;
Pivote=vec[Pospivote]=vec[4]=70
pos 0 1 2 3 4 5 6 7 8 9
valores 10 80 50 95 70 5 95 17 87 65
Izq Pivote Der
Paso 1: Incrementar Izq mientras que el valor que se encuentra en la
posición Izq sea menor que el pivote (se busca tener todos los números menores
del lado izq del pivote)
pos 0 1 2 3 4 5 6 7 8 9
valores 10 80 50 95 70 5 95 17 87 65
Izq Pivote Der
Paso 2: Decrementar Der mientras que el valor que se encuentra en la
posición Der sea mayor que el pivote (se busca tener todos los números menores
del lado izq del pivote)
pos 0 1 2 3 4 5 6 7 8 9
valores 10 80 50 95 70 5 95 17 87 65
Izq Pivote Der
Paso 3: Como ya no se cumplen los pasos anteriores entonces se
intercambian los números a los que apuntan Izq y Der (ya que el que apunta
izquierda es mayor que pivote y viceversa el número que apunta derecha es menor
que pivote) esto solo se realiza si Izq es menor o igual que Der (Izq<=Der), además
se incrementa Izq y se decrementa Der.
pos 0 1 2 3 4 5 6 7 8 9
Valores 10 65 50 95 70 5 95 17 87 80
Izq Pivote Der
Paso 4: Se repite el paso 1,2,3 mientras que Izq sea menor o igual que Der
Izq<=Der.
Repetición paso 1
7. Métodos de Ordenamientos
Ya no se cumple el paso 4 por lo que se avanza al paso cinco: Ya tenemos del lado
izquierdo todos los números menores a 70 y del lado derecho los mayores a 70.
Paso 5: Llamar de manera recursiva a el mismo método solo si inicio<Der enviando
el vector,inicio,Der. (Se están enviando los valores menores al pivote).
Paso 6: Llamar de manera recursiva a el mismo método solo si Izq<final enviando
el vector,Izq,final. (Se están enviando los valores mayores al pivote).
Se repiten los pasos 1,2,3,4 con las dos partes enviadas.
Shellsort
Para implementar este método se debe de recibir el vector y con el ya se obtiene el
tamaño del vector.
En este método se utiliza un intervalo que se calcula con el tamaño del vector
dividido entre 2, de tal forma que el intervalo da la mitad del vector y se comparan
los números de la posición 0, con el de la posición obtenida de intervalo, si el primero
es menor que el segundo se intercambian, y se avanza al siguiente par (posición 1
con posición del intervalo mas 1) y así sucesivamente.
Paso 1: Calcular el intervalo Interv=tam_vec/2; Interv=8/2=4
Paso 2: Se compara la posición 0 con la posición 4 y si el primero es mayor que el
segundo se intercambian.
pos 0 1 2 3 4 5 6 7
valores 20 66 2 26 48 3 60 8
c c
Paso 2: Se compara la posición 1 con la posición 5 y si el primero es mayor que el
segundo se intercambian.
pos 0 1 2 3 4 5 6 7
valores 20 66 2 26 48 3 60 8
C c
8. Métodos de Ordenamientos
pos 0 1 2 3 4 5 6 7
valores 20 3 2 26 48 66 60 8
c c
Paso 3: Se compara la posición 2 con la posición 6 y si el primero es mayor que el
segundo se intercambian.
pos 0 1 2 3 4 5 6 7
valores 20 3 2 26 48 66 60 8
c c
Paso 4: Se compara la posición 3 con la posición 7 y si el primero es mayor que el
segundo se intercambian.
pos 0 1 2 3 4 5 6 7
valores 20 3 2 26 48 66 60 8
c c
pos 0 1 2 3 4 5 6 7
valores 20 3 2 8 48 66 60 26
Paso 5: Se vuelve a calcular el intervalo pero ahora con el calculado anteriormente
entre dos. Interv=4/2=2.
Paso 6: Se compara la posición 0 con la posición 2, 1 con 3,2 con 4,3 con 5,4 con
6 y así sucesivamente y si el primero es mayor que el segundo se intercambian.
pos 0 1 2 3 4 5 6 7
valores 20 3 2 8 48 66 60 26
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 66 60 26
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 66 60 26
9. Métodos de Ordenamientos
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 66 60 26
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 66 60 26
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 66 60 26
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 26 60 66
Paso 5: Se vuelve a calcular el intervalo pero ahora con el calculado anteriormente
entre dos. Interv=2/2=1.
Paso 6: Se compara la posición 0 con la posición 1, 1 con 2,2 con 3,3 con 4,4 con
5 y así sucesivamente y si el primero es mayor que el segundo se intercambian.
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 26 60 66
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 20 8 48 26 60 66
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 8 20 48 26 60 66
C c
pos 0 1 2 3 4 5 6 7
10. Métodos de Ordenamientos
valores 2 3 8 20 48 26 60 66
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 8 20 48 26 60 66
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 8 20 26 48 60 66
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 8 20 26 48 60 66
c c
pos 0 1 2 3 4 5 6 7
valores 2 3 8 20 26 48 60 66
c c
Radix
Este método permite ordenar los números a través de los dígitos que contienen los
números utilizar estructuras dinámicas (colas).
pos 0 1 2 3 4 5 6 7
valores 125 7 58 17 5 328 168 218
Paso 1: Checar el último digito de cada número y ponerlo en la columna
correspondiente (cola) a su valor.
pos 0 1 2 3 4 5 6 7
valores 125 7 58 17 5 328 168 218
Dígitos d0 d1 d2 d3 d4 d5 d6 d7 d8 d9
125 7 58
11. Métodos de Ordenamientos
5 17 328
168
218
Paso 2: Se sacan cada uno de los valores de las colas y se almacenan en el vector
a partir de la cola cero.
pos 0 1 2 3 4 5 6 7
valores 125 5 7 17 58 328 168 218
Se checa el segundo dígito más a la izquierda de los números y se almacenan en
su cola respectiva a su valor, los que no tienen digito se almacenan en la cero.
Dígitos d0 d1 d2 d3 d4 d5 d6 d7 d8 d9
5 17 125 58 168
7 218 328
Paso 3: Se sacan cada uno de los valores de las colas y se almacenan en el vector
a partir de la cola cero.
Pos 0 1 2 3 4 5 6 7
valores 5 7 17 218 125 328 58 168
Se checa el segundo dígito más a la izquierda de los números y se almacenan en
su cola respectiva a su valor, los que no tienen digito se almacenan en la cero.
Dígitos d0 d1 d2 d3 d4 d5 d6 d7 d8 d9
5 125 218 328
7 168
17
58
Paso 3: Se sacan cada uno de los valores de las colas y se almacenan en el vector
a partir de la cola cero.
Pos 0 1 2 3 4 5 6 7
valores 5 7 17 58 125 168 218 328
Como ya no se tienen más dígitos se termina con el proceso y ya quedan ordenados.
12. Métodos de Ordenamientos
Conclusión
Al finalizar esta unidad entendemos que el Radix son las representaciones de
enteros que son procesadas por los algoritmos de ordenamiento se les llama
a menudo "claves", que pueden existir por sí mismas o asociadas a otros datos.
Así como el método Shell que es una versión mejorada del método de inserción
directa. Este método también se conoce con el nombre de inserción con
incrementos decrecientes.
En el método de ordenación por inserción directa cada elemento se compara
para su ubicación correcta en el arreglo, con los elementos que se encuentran en la
parte izquierda del mismo. En esta unidad se aprendió su utilización de una manera
muy sencilla.