Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DE LZARO CRDENAS
Estructura de datos
Ingeniera en Sistemas Computacionales
Unidad 5
Equipo:
Erick Amando Hernndez Toledo
Dominic Campos Avils
Kevin Daniel Romn Martnez
Unidad 5
Introduccin .............................................................................................................. 3
5.1. Algoritmos de Ordenamiento Internos ........................................................... 3
5.1.1 Burbuja........................................................................................................... 3
Ejemplo: .............................................................................................................. 5
5.1.2 Quicksort ....................................................................................................... 6
Ejemplo: .............................................................................................................. 7
5.1.3 Shell Sort........................................................................................................ 9
Ejemplo: ............................................................................................................ 10
5.1.4 Radix ............................................................................................................ 13
Ejemplo: ............................................................................................................ 14
5.2. Algoritmos de ordenamiento Externos ......................................................... 18
5.2.1 Intercalacin ................................................................................................ 18
Ejemplo: ............................................................................................................ 18
5.2.2 Mezcla Directa ............................................................................................ 20
Ejemplo: ............................................................................................................ 21
5.2.3 Mezcla Natural ............................................................................................ 22
Ejemplo: ............................................................................................................ 22
Introduccin
En esta unidad veremos el uso de los algoritmos de ordenamiento, conoceremos sus
ventajas y desventajas y as saber cul usar en diferentes ocasiones que se nos puedan
presentar en un futuro cuando queramos realizar algn programa.
Ordenar significa reagrupar o reorganizar un conjunto de datos u objetos en una secuencia
especfica, la cual puede ser de dos formas distintas:
Ascendente (menor a mayor) o
Descendente (mayor a menor).
Los mtodos de ordenacin se clasifican en dos categoras:
Ordenacin interna (de arreglos) y
Ordenacin externa (de archivos).
La ordenacin interna o de arreglos, recibe este nombre ya que los elementos o
componentes del arreglo se encuentran en la memoria principal de la computadora.
Ventajas:
Fcil implementacin.
No requiere memoria adicional.
Desventajas:
Muy lento.
Realiza numerosas comparaciones.
Realiza numerosos intercambios.
Este algoritmo es uno de los ms pobres en rendimiento.
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
nmero de elementos de la estructura es de 100, se tienen que realizar 9900 comparaciones
entes de terminar la ejecucin del mtodo.
Ejemplo:
public static void burbuja(int [] A){
int i, j, aux;
for(i=0;i<A.length-1;i++)
for(j=0;j<A.length-i-1;j++)
if(A[j+1]<A[j]){
aux=A[j+1];
A[j+1]=A[j];
A[j]=aux;
}
}
5.1.2 Quicksort
El ordenamiento rpido (quicksort) es un algoritmo que permite, en promedio, ordenar n
elementos en un tiempo proporcional a n log n. Es la tcnica de ordenamiento ms rpida
conocida. El algoritmo original es recursivo.
Algoritmo fundamental:
Elegir un pivote:
El pivote ser el primer elemento del arreglo,
El pivote ser el elemento que esta a la mitad del arreglo, o
Que el pivote se elija de entre tres elementos del arreglo (cualesquiera), los cuales se
deben comparar para seleccionar el valor intermedio de los tres y considerarlo
como el pivote.
El punto en que se cruzan los ndices es la posicin adecuada para colocar el pivote, porque
sabemos que a un lado los elementos son todos menores y al otro son todos mayores (o
habran sido intercambiados).
Ejemplo:
public class QuickSort{
public static void main(String a[]){
int i;
int array[] = {12,9,4,99,120,1,3,10,13};
Ejemplo:
Algoritmo
ENTERO N+1
Repetir mientras ( ENTERO >1 )
ENTERO parte entera ( ENTERO entre 2) Y BAND VERDADERO
Repetir mientras ( BAN = VERDADERO)
BAND FALSO
i1
Repetir mientras (( i + ENTERO) N)
Si A [ I ] > L[I + ENTERO ] entonces
aux L[I]
L[I] L[I+ENTERO] A[I+ ENTERO] AUX
BAND VERDADER O
Fin del condicional }
Hacer I I + 1
{Fin del paso ciclo }
{Fin del ciclo de paso}
{Fin del ciclo del paso}
(INT, I y AUX son variables de tipo entero Band es una variable de tipo booleano).
INT N+1
Repetir mientras (INT >1)
INT parte entera ( INT entre 2 )
Bandera True
Repetir mientras (Bandera == True)
BAND FALSO
i1
Repetir mientras ( ( i + INT ) N )
En l969 Pratt descubri que el tiempo de ejecucin del algoritmo es del orden de n*(log n).
1,3,5,9, ... ,2 +1
1,3,7,15, ... ,2-1
SECUENCIAS 1,3,5,11, ... ,(21)/3
1,4,13,40, ... ,(3-1)/2
Donde = 0,1,2,3,......
5.1.4 Radix
El mtodo de Radix considera la estructura de los elementos a ordenar. La
ordenacin se realiza comparando nmeros o carcter en la misma posicin.
Considera que los datos que sern ordenados estn representados en una Base
B del sistema de nmeros ( B = Base = Radix = Raz)
B = 10 Decimal
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
B = 2 Binario
(0, 1)
B = 8 Octal
(0, 1, 2, 3, 4, 5, 6, 7)
B = 16 Hexadecimal
Ejemplo:
Ordenacin Radix:
Ordenacin Radix:
Ordenacin Radix:
00012 = 110
00102 = 210
00112 = 310
01002 = 410
Datos Iniciales
1ra Columna
2da Columna
Datos Clasificados
5.2.1 Intercalacin
Algoritmo de ordenacin externa, que permite organizar los elementos de un archivo, de
forma ascendente o descendente.
Consiste en leer un registro de cada archivo y compararlos, el menor es almacenando en el
archivo de resultado y el otro se compara con el siguiente elemento del archivo si existe. El
proceso se repite hasta que alguno de los archivos quede vaco y los elementos del otro
archivo se almacenan directamente en el archivo resultado.
Ejemplo:
import java.util.Scanner;
Public class Intercalacion
{
public static void main (String[] args)
{
Scanner dato = new Scanner (System.in);
int n = 0;
System.out.println("Longitud de arreglo: ");
n= dato.nextInt();
int[] arreglo = new int [n];
for (int i=0 ;i<=n-1 ; i++)
{
System.out.println("Elemento [" +i+ "]= ");
arreglo [i]= dato.nextInt();
}
intercalacion (arreglo,n);
LinfUno = u2 + 1
}
tam = 2
}
b) Algoritmo
1.- Inicio
2.- Dividir la secuencia A en dos mitades denominadas B y C.
3.- Mezclar B y C combinando cada elemento en pares ordenados.
4.- Llamar A la secuencia mezclada y repetir los pasos 1 y 2, esta vez combinando los pares
en cudruples ordenados.
5.- Repetir los pasos anteriores duplicando cada vez la longitud de las secuencias
combinadas hasta que quede ordenada la secuencia original.
6.- Fin del Algoritmo.
Ejemplo:
La idea central de este algoritmo consiste en realizar particiones tomando secuencias ordenadas de
mxima longitud en lugar de secuencias ordenadas de tamao fijo previamente determinadas, como
la intercalacin directa. Posteriormente se realiza la fusin de esas secuencias ordenadas,
alternndolas entre los dos archivos auxiliares. Repitiendo este proceso, se logra que el archivo
quede completamente ordenado. Para aplicar este algoritmo, se necesitarn cuatro archivos. El
archivo original y tres archivos auxiliares. De estos cuatro archivos, dos sern considerados de
entrada y dos de salida, alternativamente en cada paso del algoritmo. El proceso termina cuando al
finalizar un paso, el segundo archivo de salida quede vaco y el primero queda completamente
ordenado.
Ejemplo: