METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
Upcoming SlideShare
Loading in...5
×
 

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

on

  • 16,610 views

 

Statistics

Views

Total Views
16,610
Views on SlideShare
16,519
Embed Views
91

Actions

Likes
2
Downloads
441
Comments
0

1 Embed 91

http://unividafup.com 91

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS) METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS) Presentation Transcript

  • UNIDAD TEMÁTICA 4: REPRESENTACIÓN YMANIPULACIÓN DE ESTRUCTURAS: ALGORITMOS DEORDENAMIENTO Y DE BÚSQUEDA 1. Introducción 2. Estructura de datos 3. Clasificación de Estructuras de datos 4. Estructuras de datos Estáticas.- Arreglos 5. Algoritmos de Ordenamiento: * Burbuja * Shell * Selección * Mezcla * Inserción * Montículo * Rápido
  • UNIDAD TEMÁTICA 4: REPRESENTACIÓN YMANIPULACIÓN DE ESTRUCTURAS: ALGORITMOS DEORDENAMIENTO Y DE BÚSQUEDA 6. Algoritmos de Búsqueda: * Lineal o Secuencial * Binaria
  • 1. IntroducciónLa información que se maneja de manera cotidiana puedeser organizada y analizada, de tal manera que nos ofrezcauna serie de alternativas para en su momento utilizarla deforma adecuada.La idea es obtener el mayor beneficio del análisis yconcentración de toda la información.Para esto podemos hacer uso de las estructuras de datos.
  • 2. Estructura de datos Una estructura de datos es una colección de datos que tienen el mismo nombre. Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de estructura de datos. El valor de la estructura de datos se determina por: El valor de los elementos. La composición de los elementos.
  • 3.Clasificación de Estructurade datosLas estructuras de datos se pueden clasificar en dosgrandes grupos: Estáticas Arreglos (vectores y matrices) Registros (struct) Archivos (file) Dinámicas Lineales Pilas Colas Listas No lineales Árboles Grafos
  • 4.Estructura de datos Estática:Arreglos Un arreglo (disposición, vector o lista, tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo. Un arreglo se identifica por su nombre y se le asocia con un nombre válido de variable. Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios índices o subíndices entre corchetes.
  • 4.Estructura de datos Estática:Arreglos Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posición). Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee, o bien todo el arreglo completo. Los arreglos se clasifican en: unidimensionales, bidimensionales y multidimensionales.
  • 4.Estructura de datos Estática:Arreglos Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el número y tipo de elementos que puede contener. 4 12 3 4 12 3 0 7 14 0 7 14
  • 4.Estructura de datos Estática:Arreglos Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo. El orden viene dado por el subíndice del vector. K[0] 4 K[1] 12 4 12 3 0 7 14 K[2] 3 K[0] K[1] K[2] K[3] K[4] K[5] K[3] 0 K[4] 7 K[5] 14
  • 4.Estructura de datos Estática:Arreglos La declaración del número y el tipo de elementos se realiza de diferentes formas según el tipo de lenguaje en el que se vaya a implementar. int A[10]; float x[7]; char p[12];  Las operaciones con los vectores o listas se pueden realizar en forma individual o sobre el vector completo mediante las instrucciones básicas y estructuras de control.
  • 4.Estructura de datos Estática:Arreglos Operaciones Asignación Operaciones Recorrido sobre los Lectura sobre el vector Búsqueda elementos Escritura completo Inserción Eliminación
  • 4.Estructura de datos Estática:Arreglos Un arreglo bidimensional es un vector de vectores. Es un conjunto de elementos, todos del mismo tipo, en los que el orden de los componentes es significativo y en el que se necesitan dos subíndices para definir cualquier elemento. Se le llama también tabla o matriz. 4 10 12 25 3 7 0 4 7 12 14 9
  • 5. ALGORITMOS DE ORDENAMIENTO La ordenación (sort) de datos consiste en la disposición de los mismos de acuerdo a cierta característica. Una colección de datos clasificados se pueden almacenar en un archivo, vector o tabla, una lista enlazada o árbol.
  • 5. ALGORITMOS DE ORDENAMIENTO Clasificación de ordenación: Interna.- cuando los datos son almacenados en vectores,listas enlazadas, tablas o arboles.Externa.- aquellos que están almacenados en archivos,cintas o dispositivos electrónicos.
  • 5. ALGORITMOS DE ORDENAMIENTO Clasificación de ordenación:Ascendente.- cuando se tiene de menor a mayor loselementos de la lista, ya sea alfabéticamente onuméricamente.Descendente.- cuando se tiene de mayor a menor loselementos de la lista.
  • 5. ALGORITMOS DE ORDENAMIENTOBurbuja Llamado también de intercambio directo o bubble sort. Es uno de los mas conocidos. Mas sencillo. Mas fácil de implementar.
  • 5. ALGORITMOS DE ORDENAMIENTOBurbujaIdea Básica: Comparar elementos consecutivos en cada paso a lo largodel arreglo. Cada vez que se realiza una comparación, los elementos seintercambian entre si en caso de no estar en orden. Se le llama de burbuja, porque en la ordenación loselementos mas ligeros suben en la lista.
  • 5. ALGORITMOS DE ORDENAMIENTOBurbujaIdea Básica: Se pasa varias veces a través del arreglo en formasecuencial.Cada paso consiste en la comparación de cada elemento consu sucesor, y el intercambio de los dos elementos si no estánen el orden correcto.
  • 5. ALGORITMOS DE ORDENAMIENTOBurbujaSimulación del funcionamiento del método de burbujausando un programa de C.Programa-ordenamiento-burbujaPrograma en C de burbuja
  • 5. ALGORITMOS DE ORDENAMIENTOBurbujaAnalisis de eficiencia.-Hay n-1 comparaciones y pasos en este método. Por lo que elnumero total de comparaciones es O(n ).El numero de intercambios depende del orden original delarchivo.
  • 5. ALGORITMOS DE ORDENAMIENTOBurbujaAnálisis de eficiencia.-La única característica redentora de este ordenamiento, esque requiere de poco espacio adicional para guardar el valortemporal para el intercambio y de algunas variables enterassimples.Que es O(n) en el caso de un arreglo ordenado en sutotalidad o casi desordenado en su totalidad.
  • 5. ALGORITMOS DE ORDENAMIENTOSelección La idea básica de esta ordenación es : Encontrar el elemento menor ( o mayor) de la lista ycolocarlo en la primera posición, a continuación, el elementosiguiente menor (o mayor) se lleva a la segunda posición yasí sucesivamente hasta que queda ordenado.Cualquier ordenamiento pos selección puedeconceptualizarse como un algoritmo que usa una cola deprioridad descendente.
  • 5. ALGORITMOS DE ORDENAMIENTOSelecciónSimulación del funcionamiento del método de selecciónusando un programa de C.Programa-ordenamiento-selecciónPrograma en C del método de selección
  • 5. ALGORITMOS DE ORDENAMIENTOSelecciónAnálisis de eficiencia.-En el primer paso se efectúan n-1 comparaciones, en elsegundo n-2 comparaciones y así sucesivamente. O sea quees del orden de O(n2).El numero de intercambios es siempre n-1.Solo se requiere un poco de memoria adicional, para guardarunas variables temporales.
  • 5. ALGORITMOS DE ORDENAMIENTOSelecciónAnálisis de eficiencia.-El ordenamiento puede ser categorizado como mas rápidoque el de burbuja.No hay mejora si el arreglo esta ordenado o desordenado.A pesar de ser fácil de codificar, es improbable que se useeste método, solamente cuando son arreglos pequeños.
  • 5. ALGORITMOS DE ORDENAMIENTORápido o QuickSort Se le llama de Intercambio por partición. Se define como un proceso recursivo. Se basa en la técnica «divide y vencerás» Se basa en el método de burbuja
  • 5. ALGORITMOS DE ORDENAMIENTORápido o QuickSortIdea Básica: Se escoge un elemento a la mitad de la lista, llamado pivote. Se tienen los elementos <= a la izquierda del pivote. Se tienen los elementos >= a la derecha del pivote.
  • 5. ALGORITMOS DE ORDENAMIENTORápido o QuickSortSimulación del funcionamiento del método rápido usandoun programa de C.Programa-ordenamiento-rápidoPrograma en C del método rápido
  • 5. ALGORITMOS DE ORDENAMIENTORápido o QuickSortAnálisis de eficiencia Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente, que para elementos semiordenados. En promedio para todos los elementos, el método hace O(nlogn) comparaciones, el cual indica que es eficiente. Para listas grandes consume mas memoria. Se considera el método mas eficiente de los algoritmos.
  • 5. ALGORITMOS DE ORDENAMIENTOInserción Se le llama de Inserción directa. Es relativamente sencillo. Se basa en intentar construir una lista ordenada. También llamado método de la baraja o naipes.
  • 5. ALGORITMOS DE ORDENAMIENTOInserciónIdea Básica: Hacer comparaciones, en donde en cada iteración forma una lista ordenada. Donde la primera pasada compara los dos primeros elementos y los ordena. La siguiente pasada, toma el tercer elemento y lo compara con los dos anteriores, colocando a este en su posición correcta. Y así sucesivamente, hasta que queda ordenado.
  • 5. ALGORITMOS DE ORDENAMIENTOInserciónSimulación del funcionamiento del método de inserciónusando un programa de C.Programa-ordenamiento-inserciónPrograma en C del método de inserción
  • 5. ALGORITMOS DE ORDENAMIENTOInserciónVentajas: Fácil de implementar. Requerimientos minimos de memoria.Desventajas: Lento Realiza numerosas comparaciones.
  • 5. ALGORITMOS DE ORDENAMIENTOInserciónAnálisis de eficiencia Es de utilidad para listas ordenadas o semiordenadas, ya que realiza pocos desplazamientos. Da mejores resultados que el de Selección y el de Burbuja. En promedio para todos los elementos, el método tiene complejidad O(n2), el cual indica que es eficiente. Estabilidad.- nunca intercambia datos con claves iguales. Requerimientos de memoria.- una variable adicional para los intercambios.
  • 5. ALGORITMOS DE ORDENAMIENTOShell Versión mejorada de Inserción. Se le conoce como de inserción con decrementos (incrementos decrecientes). Es una generalización de inserción tomando en cuenta que: El ordenamiento por inserción es eficiente si la lista esta casi ordenada. El ordenamiento por inserción es ineficiente porque mueve los valores una posición a la vez.
  • 5. ALGORITMOS DE ORDENAMIENTOShellIdea básica: Compara elementos no contiguos, y separados a una gran distancia. Si los elementos no están en orden se intercambian. Comienza especificando un salto, comparando elementos separados por dicho salto y se intercambian si es necesario. Se divide el intervalo por dos y se repite el proceso. Al finalizar el recorrido del arreglo, el salto es de uno y la ordenación funciona como burbuja.
  • 5. ALGORITMOS DE ORDENAMIENTOShellSimulación del funcionamiento del método de Shell usandoun programa de C.Programa-ordenamiento-shellPrograma en C del método shell
  • 5. ALGORITMOS DE ORDENAMIENTOShellAnálisis de eficiencia Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales. Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos.
  • 5. ALGORITMOS DE ORDENAMIENTOMezcla Se le llama también método de intercalación por fusión. Llamado Merge Sort. Es un algoritmo recursivo con un mínimo de comparaciones. Aplicación clásica de la estrategia para resolución de algoritmos «divide y vencerás».
  • 5. ALGORITMOS DE ORDENAMIENTOMezclaIdea básica: Dividir el arreglo en dos listas y ordenar cada una por separado. Cuando están ordenadas, se pueden ir mezclando para así generar la lista ordenada original mas fácilmente. La fusión de arreglos permite un método de ordenación rápido y potente.
  • 5. ALGORITMOS DE ORDENAMIENTOMezclaSimulación del funcionamiento del método de Mezcla oMerge Sort usando un programa de C.Programa-ordenamiento-mezclaPrograma en C del método mezcla
  • 5. ALGORITMOS DE ORDENAMIENTOMezclaAnálisis de eficiencia Trabaja con una lista auxiliar, lo cual consume memoria y obviamente trabajo extra al copiar las listas.
  • 5. ALGORITMOS DE ORDENAMIENTOHeap Algoritmo de ordenación recursivo. Es no estable. Su complejidad es de O(nlogn). Se basa en una propiedad de los montículos, en la que, la cima contiene el menor elemento (o el mayor) de todos los almacenados en el. Heap.- significa cola de prioridades.
  • 5. ALGORITMOS DE ORDENAMIENTOHeapIdea Básica: Consiste en almacenar todos los elementos de la lista en un heap (árbol), y luego extraer el nodo que queda como raíz del árbol (cima). Se realiza en sucesivas iteraciones, obteniendo así la lista ordenada.
  • 5. ALGORITMOS DE ORDENAMIENTOHeap o MontículoIdea Básica: Se mapea un árbol binario de tal forma en el arreglo que el nodo en la posición i es el padre de los nodos en las posiciones (2*i) y (2*i+1). El valor de un nodo es mayor o igual a los valores de sus hijos. El nodo padre tiene el valor mayor de todo su subárbol .
  • 5. ALGORITMOS DE ORDENAMIENTOHeap o MontículoProcedimiento: Convertir la lista en un árbol. Construir una lista ordenada de atrás hacia adelante (mayor a menor) haciendo lo siguiente: Sacar el valor máximo en el árbol (el de la posición 1). Poner el valor en la lista ordenada. Reconstruir el árbol con un elemento menos. Usar el mismo arreglo para el árbol y la lista ordenada.
  • 5. ALGORITMOS DE ORDENAMIENTOHeap o MontículoSimulación del funcionamiento del método de Monticulo oHeap Sort usando un programa de C.Programa-ordenamiento-heapPrograma en C del método heapGrafico del funcionamiento del Heap sort.
  • 5. ALGORITMOS DE ORDENAMIENTOHeap o MontículoAnálisis de eficiencia En el caso promedio, el heapsort no es tan eficiente como el qucksort. El heapsort requiere 2 veces mas tiempo que el quicksort. No es muy eficiente para pocos elementos, por la creacion del árbol y el calculo de la ubicación de padres e hijos. Requerimientos.- de una sola variable para guardar el valor de intercambio.