SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Unidad II
Tema 5: Algoritmos de Ordenamiento
y Búsqueda
Profesor: Jorge Escalona / Tobías Bolívar
Email: escaljorge@gmail.com / tobiasbolivar@gmail.com
Página Web: http://estructuradatos.tripod.com
Algoritmos de Ordenación
• Generalmente, se considera ordenar (clasificar) como el proceso de
reorganización de un conjunto dado de objetos en una secuencia
especificada.
• El objetivo de este proceso es facilitar la búsqueda posterior de los
elementos del conjunto ordenado.
• La búsqueda de información es una operación básica en el proceso de datos,
de ahí que por extensión, la ordenación se convierta también en una actividad
fundamental en dicho procesamiento de datos.
• El tema de la ordenación es idóneo para mostrar como los problemas se
pueden resolver utilizando una gran variedad de algoritmos, todos con el mismo
objetivo, pero cada uno presentando ciertas ventajas sobre los otros.
IntroducciIntroduccióón:n:
Algoritmos de Ordenación
• Clave: La parte de un registro por la cual se ordena la lista. Por ejemplo,
una lista de registros con campos nombre, direccion y telefono se puede
ordenar alfabéticamente de acuerdo a la clave nombre. En este caso los
campos direccion y telefono no se toman en cuenta en el ordenamiento.
• Criterio de ordenamiento (o de comparación): EL criterio que utilizamos
para asignar valores a los registros con base en una o más claves. De esta
manera decidimos si un registro es mayor o menor que otro, es deir, si se
ordena en forma ascendente o descendente.
• Registro: Un grupo de datos que forman la lista. Pueden ser datos atómicos
(enteros, caracteres, reales, etc.) o grupos de ellos (estructuras, registros u
objetos).
IntroducciIntroduccióón:n:
Algoritmos de Ordenación
• Estabilidad: Cómo se comporta con registros que tienen claves iguales.
Algunos algoritmos mantienen el orden relativo entre éstos y otros no.
Ejemplo:
Lista Original : "Pedro 19, Juan 23, Felipe 15, Marcela 20, Juan 18, Marcela 17",
Ordenación Estable : "Felipe 15, Marcela 20, Marcela 17, Juan 23, Juan 18, Pedro 19".
Ordenación Inestable: "Felipe 15, Marcela 17, Marcela 20, Juan 23, Juan 18, Pedro 19".
"Felipe 15, Marcela 20, Marcela 17, Juan 18, Juan 23, Pedro 19".
"Felipe 15, Marcela 20, Marcela 17, Juan 23, Juan 18, Pedro 19".
• Tiempo de ejecución: Medida de desempeño basada en la complejidad del
algoritmo, que no tiene que ver con dificultad, sino con rendimiento.
• Requerimientos de memoria: El algoritmo puede necesitar memoria adicional
para realizar su labor. En general es preferible que no sea así, pero es común
en la programación tener que sacrificar memoria por rendimiento.
Criterios para la evaluaciCriterios para la evaluacióón de los algoritmos de ordenacin de los algoritmos de ordenacióón:n:
Algoritmos de Ordenación
Tabla comparativa de algoritmos
Nombre Complejidad Estabilidad Memoria adicional
Ordenamiento Burbuja
(Bubblesort)
O(n2) Estable No
Ordenamiento por Selección O(n2) No Estable No
Ordenamiento por Inserción O(n2) Estable No
Ordenamiento Rápido
(Quicksort)
O(n * log2(n)) No Estable No
Algoritmos de OrdenaciAlgoritmos de Ordenacióón mn máás comunes:s comunes:
Algoritmos de Ordenación
• Grado de orden de la información: Si la información está parcialmente ordenada y
no se requiere mayor grado de complicación, se puede utilizar un algoritmo sencillo
como el ordenamiento burbuja. Si por el contrario los datos están muy desordenados,
un algoritmo poderoso como Quicksort puede ser el más indicado. Si se desconoce el
grado de orden de la información, se recomienda elegir un algoritmo que se comporte
de manera similar en cualquiera de estos dos casos extremos.
• Cantidad de datos a ordenar: Si la cantidad es pequeña, no es necesario utilizar un
algoritmo complejo, y es preferible uno de fácil implementación. Una cantidad muy
grande puede hacer prohibitivo utilizar un algoritmo que requiera de mucha memoria
adicional.
• Tipo de datos a ordenar: Algunos algoritmos sólo funcionan con un tipo específico de
datos (enteros, enteros positivos, etc.) y otros son generales, es decir, aplicables a
cualquier tipo de dato.
• Tamaño de los registros de la lista: Algunos algoritmos realizan múltiples
intercambios (burbuja, inserción). Si los registros son de gran tamaño estos
intercambios son más lentos.
Criterios para la selecciCriterios para la seleccióón de un algoritmo de ordenacin de un algoritmo de ordenacióón:n:
Algoritmos de Ordenación
Algoritmo de OrdenaciAlgoritmo de Ordenacióónn BBúúrbujarbuja
/* Ordenación Burbuja para enteros */
#define SWAP(a,b) { int t; t=a; a=b; b=t; }
void burbuja( int A[], int n )
/* Pre-condicion: A contiene n elementos a ser ordenados */
{ int i, j;
for(i=0;i<n;i++) {
/* Recorre el arreglo desde el primer elemento hasta el
final de la región no ordenada */
for(j=1;j<(n-i);j++) {
/* Si elementos adyacentes están fuera de orden, se intercambian */
if( A[j-1]>A[j] ) SWAP(A[j-1],A[j]);
}
}
}
Algoritmos de Ordenación
AnAnáálisis del Algoritmo de Ordenacilisis del Algoritmo de Ordenacióónn BBúúrbujarbuja
Ventajas:
•Fácil implementación.
•No requiere memoria adicional.
Desventajas:
•Muy lento.
•Realiza numerosas comparaciones.
•Realiza numerosos intercambios.
Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es
estable.
Requerimientos de Memoria: Este algoritmo sólo requiere de una variable adicional para
realizar los intercambios.
Tiempo de Ejecución: El ciclo interno se ejecuta n veces para una lista de n elementos. El
ciclo externo también se ejecuta n veces. Es decir, la complejidad es n * n = O(n2). El
comportamiento del caso promedio depende del orden de entrada de los datos, pero es
sólo un poco mejor que el del peor caso, y sigue siendo O(n2).
Algoritmos de Ordenación
Algoritmo de OrdenaciAlgoritmo de Ordenacióón por Seleccin por Seleccióón:n:
/* SelectionSort para Enteros */
void seleccion( int A[], int n ) {
/* Pre-condicion: A contiene n elementos a ser ordenados */
int x,i,j,k;
for( i=1; i <n-1; i++){
x = A[i]; k = i;
/* buscar el minimo desde i+1 a n */
for( j =i+1; j <n; j++){
if (A[j] < x){ k = j;
/* guarda el indice del minimo */
x = A[j];
/* guarda el valor del minimo */
}
}
A[k] = A[i];
/* intercambiamos valores */
A[i] = x;
}
}
Algoritmos de Ordenación
AnAnáálisis de la Ordenacilisis de la Ordenacióón por Seleccin por Seleccióón:n:
Estabilidad: Depende del orden relativo de los datos y del elemento pivot que se seleccione.
En general no es estable.
Requerimientos de Memoria: Al igual que el ordenamiento burbuja, este algoritmo sólo
necesita una variable adicional para realizar los intercambios.
Tiempo de Ejecución: El ciclo externo se ejecuta n veces para una lista de n elementos. Cada
búsqueda requiere comparar todos los elementos no clasificados. Luego la complejidad es
O(n2). Este algoritmo presenta un comportamiento constante independiente del orden de los
datos. Luego la complejidad promedio es también O(n2).
Ventajas:
•Fácil implementación.
•No requiere memoria adicional.
•Realiza pocos intercambios.
•Rendimiento constante: poca diferencia entre el peor y el mejor caso.
Desventajas:
•Lento.
•Realiza numerosas comparaciones.
Algoritmo de OrdenaciAlgoritmo de Ordenacióón por Insercin por Insercióón:n:
Algoritmos de Ordenación
/* InsertionSort para Enteros */
void insercion( int A[], int n ) {
/* Pre-condicion: a contiene n elementos a ser ordenados */
int i, j, v;
/* Inicialmente, el primer elemento se considera 'ordenado' */
/* i divide el arreglo a en una región ordenada, x<i, y una región no
ordenada, x >= i */
for(i=1;i<n;i++) {
/* Selecciona el elemento en el inicio de la región no ordenada */
v = A[i];
/* Recorre hacia atrás el arreglo, buscando la posición
correspondiente a v */
j = i;
/* Si este elemento es mayor que v, moverlo hacia arriba */
while ( A[j-1] > v ) {
A[j] = A[j-1]; j = j-1;
if ( j <= 0 ) break;
}
/* Se detiene cuando A[j-1] <= v, colocando a v en la posición j */
A[j] = v;
}
}
Algoritmos de Ordenación
AnAnáálisis de la Ordenacilisis de la Ordenacióón por Insercin por Insercióón:n:
Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es
estable.
Requerimientos de Memoria: Requiere una variable adicional para realizar los intercambios.
Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se ejecuta n-1 veces. El
ciclo interno se ejecuta como máximo una vez en la primera iteración, 2 veces en la segunda,
3 veces en la tercera, etc. Esto produce una complejidad O(n2).
Ventajas:
•Fácil implementación.
•Requerimientos mínimos de memoria.
Desventajas:
•Lento.
•Realiza numerosas comparaciones.
Algoritmos de Ordenación
Nombre Procedimiento: OrdRap
Parámetros: lista a ordenar (lista)
índice inferior (inf)
índice superior (sup)
// Inicialización de variables
1. elem_div = lista[sup];
2. i = inf - 1;
3. j = sup;
4. cont = 1;
// Verificamos que no se crucen los
//límites
5. if (inf >= sup)
6. retornar;
// Clasificamos la sublista
7. while (cont)
8. while (lista[++i] < elem_div);
9. while (lista[--j] > elem_div);
10. if (i < j)
11. temp = lista[i];
12. lista[i] = lista[j];
13. lista[j] = temp;
14. else
15. cont = 0;
// Copiamos el elemento de división
// en su posición final
16. temp = lista[i];
17. lista[i] = lista[sup];
18. lista[sup] = temp;
// Aplicamos el procedimiento
// recursivamente a cada sublista
19. OrdRap (lista, inf, i - 1);
20. OrdRap (lista, i + 1, sup);
Algoritmo de OrdenaciAlgoritmo de Ordenacióón Rn Ráápida (pida (QuicksortQuicksort):):
Algoritmos de Ordenación
AnAnáálisis de la Ordenacilisis de la Ordenacióón Rn Ráápida (pida (QuicksortQuicksort):):
Estabilidad: No es estable.
Requerimientos de Memoria: No requiere memoria adicional en su forma recursiva. En su
forma iterativa la necesita para la pila.
Tiempo de Ejecución:
• Caso promedio. La complejidad para dividir una lista de n es O(n). Cada sublista
genera en promedio dos sublistas más de largo n/2. Por lo tanto la complejidad se
define en forma recurrente como:
f(1) = 1 ; f(n) = n + 2 f(n/2) ;
La forma cerrada de esta expresión es: f(n) = n log2n
Complejidad: O(n log2n).
• El peor caso ocurre cuando la lista ya está ordenada, porque cada llamada genera
sólo una sublista (todos los elementos son menores que el elemento de división).
En este caso el rendimiento se degrada a O(n2). Existen diversas optimizaciones
que evitan este comportamiento.
Algoritmos de Ordenación
Ventajas:
•Muy rápido
•No requiere memoria adicional.
Desventajas:
•Implementación un poco más complicada.
•Recursividad (utiliza muchos recursos).
•Mucha diferencia entre el peor y el mejor
caso.
AnAnáálisis de la Ordenacilisis de la Ordenacióón Rn Ráápida (pida (QuicksortQuicksort):):
Algoritmos de Búsqueda
• Búsqueda por un índice.
– En el caso de arreglos, esto resulta inmediato, basta con acceder a dicho
elemento, A[i].
– En el caso de listas enlazadas, se debe recorrer la lista haste el i-ésimo
elemento.
• Búsqueda por un valor.
– Búsqueda Secuencial. (Estructuras sin ningún ordenamiento).
Complejidad es O(n)
– Búsqueda Binaria. (Estructuras ordenadas por algún valor clave).
Complejidad es 0(lg2 n)
Algoritmos de Búsqueda
Algoritmo Busqueda_Secuencial
Entradas
A: array [1..n] de T
x: T
Salida
i: 0..n
Inicio
i <-- 0
repetir
i <-- i+1
hasta A[i]=x o i=n
si A[i] <> x entonces
i <-- 0 (el elemento no está en el vector)
devolver(i)
Fin
Algoritmos de Búsqueda
Algoritmo Busqueda_Binaria
Entradas
A: array [1..n] de T; x: T;
Salida
k: 0..n
Variables
i,j: 1..n
Inicio
i <-- 1; j <-- n
repetir
k <-- (i+j) div 2 (seleccionamos el elemento central)
si x > A[k] entonces i <-- k+1 (buscamos por la derecha)
sino j <-- k-1 (buscamos por la izquierda)
hasta A[k]=x o i>j
si A(k) <> x entonces k <-- 0
devolver(k)
Fin

Contenu connexe

Tendances

Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
ikky2345
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
Maiky Kobatakane
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIO
Wilmer Quintero
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
lichic
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
linkinpark03
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
Fuerza Auriazul
 
Método de ordenamiento por selección
Método de ordenamiento por selecciónMétodo de ordenamiento por selección
Método de ordenamiento por selección
figocancun
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
sirekarol
 
Algoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y BúsquedaAlgoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y Búsqueda
Javier Alvarez
 

Tendances (20)

Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
 
Métodos de ordenamiento
Métodos de ordenamiento Métodos de ordenamiento
Métodos de ordenamiento
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIO
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Método de ordenamiento por selección
Método de ordenamiento por selecciónMétodo de ordenamiento por selección
Método de ordenamiento por selección
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Shell exposición
Shell exposiciónShell exposición
Shell exposición
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
Algoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y BúsquedaAlgoritmo, Ordenacion y Búsqueda
Algoritmo, Ordenacion y Búsqueda
 

Similaire à Tema5

Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
mishuhot
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
José Juan Herrera
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
VivianaG
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmo
Gaston Demundo
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
IrvingMoran4
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
Patricia Correa
 

Similaire à Tema5 (20)

Recursividad, Ordenacion y Busqueda
Recursividad, Ordenacion y BusquedaRecursividad, Ordenacion y Busqueda
Recursividad, Ordenacion y Busqueda
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
analisis de los algoritmos
analisis de los algoritmosanalisis de los algoritmos
analisis de los algoritmos
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmo
 
Unidad 7
Unidad 7Unidad 7
Unidad 7
 
Unidad 7
Unidad 7Unidad 7
Unidad 7
 
Unidad 7
Unidad 7Unidad 7
Unidad 7
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++
 
Algortimos De Ordenamiento
Algortimos De OrdenamientoAlgortimos De Ordenamiento
Algortimos De Ordenamiento
 
2rias5me
2rias5me2rias5me
2rias5me
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
Presentacion recursividad
Presentacion recursividadPresentacion recursividad
Presentacion recursividad
 

Plus de Pedro Sánchez (20)

Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Guión didáctico
Guión didácticoGuión didáctico
Guión didáctico
 
Tarjeta Madre
Tarjeta MadreTarjeta Madre
Tarjeta Madre
 
Importancia de las redes sociales en la Educación
Importancia de las redes sociales en la EducaciónImportancia de las redes sociales en la Educación
Importancia de las redes sociales en la Educación
 
Evolucion de la web
Evolucion de la webEvolucion de la web
Evolucion de la web
 
Plagio en Internet Grupo los Integradores
Plagio en Internet Grupo los IntegradoresPlagio en Internet Grupo los Integradores
Plagio en Internet Grupo los Integradores
 
Tema8
Tema8Tema8
Tema8
 
Tema7
Tema7Tema7
Tema7
 
Tema6
Tema6Tema6
Tema6
 
Tema4
Tema4Tema4
Tema4
 
Tema3
Tema3Tema3
Tema3
 
Tema2
Tema2Tema2
Tema2
 
Tema1 (2)
Tema1 (2)Tema1 (2)
Tema1 (2)
 
Obj 10 capa 6 - presentacion
Obj 10   capa 6 - presentacionObj 10   capa 6 - presentacion
Obj 10 capa 6 - presentacion
 
Obj 9 capa 5 - sesion
Obj 9   capa 5 - sesionObj 9   capa 5 - sesion
Obj 9 capa 5 - sesion
 
Obj 8 capa 4 - transporte
Obj 8   capa 4 - transporteObj 8   capa 4 - transporte
Obj 8 capa 4 - transporte
 
Obj 7.4 capa 3 - red - router
Obj 7.4   capa 3 - red - router Obj 7.4   capa 3 - red - router
Obj 7.4 capa 3 - red - router
 
Obj 7.3 capa 3 - red - sub redes
Obj 7.3   capa 3 - red - sub redes Obj 7.3   capa 3 - red - sub redes
Obj 7.3 capa 3 - red - sub redes
 
Obj 7.2 capa 3 - red - ip clase d-e sub redes
Obj 7.2   capa 3 - red - ip clase d-e sub redes Obj 7.2   capa 3 - red - ip clase d-e sub redes
Obj 7.2 capa 3 - red - ip clase d-e sub redes
 
Obj 7.1 capa 3 - red - direccionamiento ip
Obj 7.1   capa 3 - red - direccionamiento ipObj 7.1   capa 3 - red - direccionamiento ip
Obj 7.1 capa 3 - red - direccionamiento ip
 

Dernier

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Dernier (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Tema5

  • 1. Unidad II Tema 5: Algoritmos de Ordenamiento y Búsqueda Profesor: Jorge Escalona / Tobías Bolívar Email: escaljorge@gmail.com / tobiasbolivar@gmail.com Página Web: http://estructuradatos.tripod.com
  • 2. Algoritmos de Ordenación • Generalmente, se considera ordenar (clasificar) como el proceso de reorganización de un conjunto dado de objetos en una secuencia especificada. • El objetivo de este proceso es facilitar la búsqueda posterior de los elementos del conjunto ordenado. • La búsqueda de información es una operación básica en el proceso de datos, de ahí que por extensión, la ordenación se convierta también en una actividad fundamental en dicho procesamiento de datos. • El tema de la ordenación es idóneo para mostrar como los problemas se pueden resolver utilizando una gran variedad de algoritmos, todos con el mismo objetivo, pero cada uno presentando ciertas ventajas sobre los otros. IntroducciIntroduccióón:n:
  • 3. Algoritmos de Ordenación • Clave: La parte de un registro por la cual se ordena la lista. Por ejemplo, una lista de registros con campos nombre, direccion y telefono se puede ordenar alfabéticamente de acuerdo a la clave nombre. En este caso los campos direccion y telefono no se toman en cuenta en el ordenamiento. • Criterio de ordenamiento (o de comparación): EL criterio que utilizamos para asignar valores a los registros con base en una o más claves. De esta manera decidimos si un registro es mayor o menor que otro, es deir, si se ordena en forma ascendente o descendente. • Registro: Un grupo de datos que forman la lista. Pueden ser datos atómicos (enteros, caracteres, reales, etc.) o grupos de ellos (estructuras, registros u objetos). IntroducciIntroduccióón:n:
  • 4. Algoritmos de Ordenación • Estabilidad: Cómo se comporta con registros que tienen claves iguales. Algunos algoritmos mantienen el orden relativo entre éstos y otros no. Ejemplo: Lista Original : "Pedro 19, Juan 23, Felipe 15, Marcela 20, Juan 18, Marcela 17", Ordenación Estable : "Felipe 15, Marcela 20, Marcela 17, Juan 23, Juan 18, Pedro 19". Ordenación Inestable: "Felipe 15, Marcela 17, Marcela 20, Juan 23, Juan 18, Pedro 19". "Felipe 15, Marcela 20, Marcela 17, Juan 18, Juan 23, Pedro 19". "Felipe 15, Marcela 20, Marcela 17, Juan 23, Juan 18, Pedro 19". • Tiempo de ejecución: Medida de desempeño basada en la complejidad del algoritmo, que no tiene que ver con dificultad, sino con rendimiento. • Requerimientos de memoria: El algoritmo puede necesitar memoria adicional para realizar su labor. En general es preferible que no sea así, pero es común en la programación tener que sacrificar memoria por rendimiento. Criterios para la evaluaciCriterios para la evaluacióón de los algoritmos de ordenacin de los algoritmos de ordenacióón:n:
  • 5. Algoritmos de Ordenación Tabla comparativa de algoritmos Nombre Complejidad Estabilidad Memoria adicional Ordenamiento Burbuja (Bubblesort) O(n2) Estable No Ordenamiento por Selección O(n2) No Estable No Ordenamiento por Inserción O(n2) Estable No Ordenamiento Rápido (Quicksort) O(n * log2(n)) No Estable No Algoritmos de OrdenaciAlgoritmos de Ordenacióón mn máás comunes:s comunes:
  • 6. Algoritmos de Ordenación • Grado de orden de la información: Si la información está parcialmente ordenada y no se requiere mayor grado de complicación, se puede utilizar un algoritmo sencillo como el ordenamiento burbuja. Si por el contrario los datos están muy desordenados, un algoritmo poderoso como Quicksort puede ser el más indicado. Si se desconoce el grado de orden de la información, se recomienda elegir un algoritmo que se comporte de manera similar en cualquiera de estos dos casos extremos. • Cantidad de datos a ordenar: Si la cantidad es pequeña, no es necesario utilizar un algoritmo complejo, y es preferible uno de fácil implementación. Una cantidad muy grande puede hacer prohibitivo utilizar un algoritmo que requiera de mucha memoria adicional. • Tipo de datos a ordenar: Algunos algoritmos sólo funcionan con un tipo específico de datos (enteros, enteros positivos, etc.) y otros son generales, es decir, aplicables a cualquier tipo de dato. • Tamaño de los registros de la lista: Algunos algoritmos realizan múltiples intercambios (burbuja, inserción). Si los registros son de gran tamaño estos intercambios son más lentos. Criterios para la selecciCriterios para la seleccióón de un algoritmo de ordenacin de un algoritmo de ordenacióón:n:
  • 7. Algoritmos de Ordenación Algoritmo de OrdenaciAlgoritmo de Ordenacióónn BBúúrbujarbuja /* Ordenación Burbuja para enteros */ #define SWAP(a,b) { int t; t=a; a=b; b=t; } void burbuja( int A[], int n ) /* Pre-condicion: A contiene n elementos a ser ordenados */ { int i, j; for(i=0;i<n;i++) { /* Recorre el arreglo desde el primer elemento hasta el final de la región no ordenada */ for(j=1;j<(n-i);j++) { /* Si elementos adyacentes están fuera de orden, se intercambian */ if( A[j-1]>A[j] ) SWAP(A[j-1],A[j]); } } }
  • 8. Algoritmos de Ordenación AnAnáálisis del Algoritmo de Ordenacilisis del Algoritmo de Ordenacióónn BBúúrbujarbuja Ventajas: •Fácil implementación. •No requiere memoria adicional. Desventajas: •Muy lento. •Realiza numerosas comparaciones. •Realiza numerosos intercambios. Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable. Requerimientos de Memoria: Este algoritmo sólo requiere de una variable adicional para realizar los intercambios. Tiempo de Ejecución: El ciclo interno se ejecuta n veces para una lista de n elementos. El ciclo externo también se ejecuta n veces. Es decir, la complejidad es n * n = O(n2). El comportamiento del caso promedio depende del orden de entrada de los datos, pero es sólo un poco mejor que el del peor caso, y sigue siendo O(n2).
  • 9. Algoritmos de Ordenación Algoritmo de OrdenaciAlgoritmo de Ordenacióón por Seleccin por Seleccióón:n: /* SelectionSort para Enteros */ void seleccion( int A[], int n ) { /* Pre-condicion: A contiene n elementos a ser ordenados */ int x,i,j,k; for( i=1; i <n-1; i++){ x = A[i]; k = i; /* buscar el minimo desde i+1 a n */ for( j =i+1; j <n; j++){ if (A[j] < x){ k = j; /* guarda el indice del minimo */ x = A[j]; /* guarda el valor del minimo */ } } A[k] = A[i]; /* intercambiamos valores */ A[i] = x; } }
  • 10. Algoritmos de Ordenación AnAnáálisis de la Ordenacilisis de la Ordenacióón por Seleccin por Seleccióón:n: Estabilidad: Depende del orden relativo de los datos y del elemento pivot que se seleccione. En general no es estable. Requerimientos de Memoria: Al igual que el ordenamiento burbuja, este algoritmo sólo necesita una variable adicional para realizar los intercambios. Tiempo de Ejecución: El ciclo externo se ejecuta n veces para una lista de n elementos. Cada búsqueda requiere comparar todos los elementos no clasificados. Luego la complejidad es O(n2). Este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad promedio es también O(n2). Ventajas: •Fácil implementación. •No requiere memoria adicional. •Realiza pocos intercambios. •Rendimiento constante: poca diferencia entre el peor y el mejor caso. Desventajas: •Lento. •Realiza numerosas comparaciones.
  • 11. Algoritmo de OrdenaciAlgoritmo de Ordenacióón por Insercin por Insercióón:n: Algoritmos de Ordenación /* InsertionSort para Enteros */ void insercion( int A[], int n ) { /* Pre-condicion: a contiene n elementos a ser ordenados */ int i, j, v; /* Inicialmente, el primer elemento se considera 'ordenado' */ /* i divide el arreglo a en una región ordenada, x<i, y una región no ordenada, x >= i */ for(i=1;i<n;i++) { /* Selecciona el elemento en el inicio de la región no ordenada */ v = A[i]; /* Recorre hacia atrás el arreglo, buscando la posición correspondiente a v */ j = i; /* Si este elemento es mayor que v, moverlo hacia arriba */ while ( A[j-1] > v ) { A[j] = A[j-1]; j = j-1; if ( j <= 0 ) break; } /* Se detiene cuando A[j-1] <= v, colocando a v en la posición j */ A[j] = v; } }
  • 12. Algoritmos de Ordenación AnAnáálisis de la Ordenacilisis de la Ordenacióón por Insercin por Insercióón:n: Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable. Requerimientos de Memoria: Requiere una variable adicional para realizar los intercambios. Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se ejecuta n-1 veces. El ciclo interno se ejecuta como máximo una vez en la primera iteración, 2 veces en la segunda, 3 veces en la tercera, etc. Esto produce una complejidad O(n2). Ventajas: •Fácil implementación. •Requerimientos mínimos de memoria. Desventajas: •Lento. •Realiza numerosas comparaciones.
  • 13. Algoritmos de Ordenación Nombre Procedimiento: OrdRap Parámetros: lista a ordenar (lista) índice inferior (inf) índice superior (sup) // Inicialización de variables 1. elem_div = lista[sup]; 2. i = inf - 1; 3. j = sup; 4. cont = 1; // Verificamos que no se crucen los //límites 5. if (inf >= sup) 6. retornar; // Clasificamos la sublista 7. while (cont) 8. while (lista[++i] < elem_div); 9. while (lista[--j] > elem_div); 10. if (i < j) 11. temp = lista[i]; 12. lista[i] = lista[j]; 13. lista[j] = temp; 14. else 15. cont = 0; // Copiamos el elemento de división // en su posición final 16. temp = lista[i]; 17. lista[i] = lista[sup]; 18. lista[sup] = temp; // Aplicamos el procedimiento // recursivamente a cada sublista 19. OrdRap (lista, inf, i - 1); 20. OrdRap (lista, i + 1, sup); Algoritmo de OrdenaciAlgoritmo de Ordenacióón Rn Ráápida (pida (QuicksortQuicksort):):
  • 14. Algoritmos de Ordenación AnAnáálisis de la Ordenacilisis de la Ordenacióón Rn Ráápida (pida (QuicksortQuicksort):): Estabilidad: No es estable. Requerimientos de Memoria: No requiere memoria adicional en su forma recursiva. En su forma iterativa la necesita para la pila. Tiempo de Ejecución: • Caso promedio. La complejidad para dividir una lista de n es O(n). Cada sublista genera en promedio dos sublistas más de largo n/2. Por lo tanto la complejidad se define en forma recurrente como: f(1) = 1 ; f(n) = n + 2 f(n/2) ; La forma cerrada de esta expresión es: f(n) = n log2n Complejidad: O(n log2n). • El peor caso ocurre cuando la lista ya está ordenada, porque cada llamada genera sólo una sublista (todos los elementos son menores que el elemento de división). En este caso el rendimiento se degrada a O(n2). Existen diversas optimizaciones que evitan este comportamiento.
  • 15. Algoritmos de Ordenación Ventajas: •Muy rápido •No requiere memoria adicional. Desventajas: •Implementación un poco más complicada. •Recursividad (utiliza muchos recursos). •Mucha diferencia entre el peor y el mejor caso. AnAnáálisis de la Ordenacilisis de la Ordenacióón Rn Ráápida (pida (QuicksortQuicksort):):
  • 16. Algoritmos de Búsqueda • Búsqueda por un índice. – En el caso de arreglos, esto resulta inmediato, basta con acceder a dicho elemento, A[i]. – En el caso de listas enlazadas, se debe recorrer la lista haste el i-ésimo elemento. • Búsqueda por un valor. – Búsqueda Secuencial. (Estructuras sin ningún ordenamiento). Complejidad es O(n) – Búsqueda Binaria. (Estructuras ordenadas por algún valor clave). Complejidad es 0(lg2 n)
  • 17. Algoritmos de Búsqueda Algoritmo Busqueda_Secuencial Entradas A: array [1..n] de T x: T Salida i: 0..n Inicio i <-- 0 repetir i <-- i+1 hasta A[i]=x o i=n si A[i] <> x entonces i <-- 0 (el elemento no está en el vector) devolver(i) Fin
  • 18. Algoritmos de Búsqueda Algoritmo Busqueda_Binaria Entradas A: array [1..n] de T; x: T; Salida k: 0..n Variables i,j: 1..n Inicio i <-- 1; j <-- n repetir k <-- (i+j) div 2 (seleccionamos el elemento central) si x > A[k] entonces i <-- k+1 (buscamos por la derecha) sino j <-- k-1 (buscamos por la izquierda) hasta A[k]=x o i>j si A(k) <> x entonces k <-- 0 devolver(k) Fin