SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
UNIDAD TEMÁTICA 4: REPRESENTACIÓN Y
MANIPULACIÓN DE ESTRUCTURAS: ALGORITMOS DE
ORDENAMIENTO 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 Y
MANIPULACIÓN DE ESTRUCTURAS: ALGORITMOS DE
ORDENAMIENTO Y DE BÚSQUEDA




   6. Algoritmos de Búsqueda:
      * Lineal o Secuencial
      * Binaria
1. Introducción
La información que se maneja de manera cotidiana puede
ser organizada y analizada, de tal manera que nos ofrezca
una serie de alternativas para en su momento utilizarla de
forma adecuada.
La idea es obtener el mayor beneficio del análisis y
concentració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 Estructura
de datos
Las estructuras de datos se pueden clasificar en dos
grandes 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 los
elementos de la lista, ya sea alfabéticamente o
numéricamente.

Descendente.- cuando se tiene de mayor a menor los
elementos de la lista.
5. ALGORITMOS DE ORDENAMIENTO
Burbuja
 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 ORDENAMIENTO
Burbuja
Idea Básica:
   Comparar elementos consecutivos en cada paso a lo largo
del arreglo.
 Cada vez que se realiza una comparación, los elementos se
intercambian entre si en caso de no estar en orden.
 Se le llama de burbuja, porque en la ordenación los
elementos mas ligeros suben en la lista.
5. ALGORITMOS DE ORDENAMIENTO
Burbuja
Idea Básica:

 Se pasa varias veces a través del arreglo en forma
secuencial.
Cada paso consiste en la comparación de cada elemento con
su sucesor, y el intercambio de los dos elementos si no están
en el orden correcto.
5. ALGORITMOS DE ORDENAMIENTO
Burbuja
Simulación del funcionamiento del método de burbuja
usando un programa de C.

Programa-ordenamiento-burbuja

Programa en C de burbuja
5. ALGORITMOS DE ORDENAMIENTO
Burbuja
Analisis de eficiencia.-

Hay n-1 comparaciones y pasos en este método. Por lo que el
numero total de comparaciones es O(n ).
El numero de intercambios depende del orden original del
archivo.
5. ALGORITMOS DE ORDENAMIENTO
Burbuja
Análisis de eficiencia.-

La única característica redentora de este ordenamiento, es
que requiere de poco espacio adicional para guardar el valor
temporal para el intercambio y de algunas variables enteras
simples.
Que es O(n) en el caso de un arreglo ordenado en su
totalidad o casi desordenado en su totalidad.
5. ALGORITMOS DE ORDENAMIENTO
Selección
 La idea básica de esta ordenación es :


  Encontrar el elemento menor ( o mayor) de la lista y
colocarlo en la primera posición, a continuación, el elemento
siguiente menor (o mayor) se lleva a la segunda posición y
así sucesivamente hasta que queda ordenado.
Cualquier ordenamiento pos selección puede
conceptualizarse como un algoritmo que usa una cola de
prioridad descendente.
5. ALGORITMOS DE ORDENAMIENTO
Selección
Simulación del funcionamiento del método de selección
usando un programa de C.

Programa-ordenamiento-selección

Programa en C del método de selección
5. ALGORITMOS DE ORDENAMIENTO
Selección
Análisis de eficiencia.-

En el primer paso se efectúan n-1 comparaciones, en el
segundo n-2 comparaciones y así sucesivamente. O sea que
es del orden de O(n2).
El numero de intercambios es siempre n-1.
Solo se requiere un poco de memoria adicional, para guardar
unas variables temporales.
5. ALGORITMOS DE ORDENAMIENTO
Selección
Análisis de eficiencia.-

El ordenamiento puede ser categorizado como mas rápido
que 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 use
este método, solamente cuando son arreglos pequeños.
5. ALGORITMOS DE ORDENAMIENTO
Rá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 ORDENAMIENTO
Rápido o QuickSort
Idea 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 ORDENAMIENTO
Rápido o QuickSort
Simulación del funcionamiento del método rápido usando
un programa de C.

Programa-ordenamiento-rápido

Programa en C del método rápido
5. ALGORITMOS DE ORDENAMIENTO
Rápido o QuickSort
Aná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 ORDENAMIENTO
Inserció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 ORDENAMIENTO
Inserción
Idea 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 ORDENAMIENTO
Inserción
Simulación del funcionamiento del método de inserción
usando un programa de C.

Programa-ordenamiento-inserción

Programa en C del método de inserción
5. ALGORITMOS DE ORDENAMIENTO
Inserción
Ventajas:
 Fácil de implementar.
 Requerimientos minimos de memoria.


Desventajas:
 Lento
 Realiza numerosas comparaciones.
5. ALGORITMOS DE ORDENAMIENTO
Inserción
Aná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 ORDENAMIENTO
Shell
 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 ORDENAMIENTO
Shell
Idea 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 ORDENAMIENTO
Shell
Simulación del funcionamiento del método de Shell usando
un programa de C.

Programa-ordenamiento-shell

Programa en C del método shell
5. ALGORITMOS DE ORDENAMIENTO
Shell
Aná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 ORDENAMIENTO
Mezcla
 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 ORDENAMIENTO
Mezcla
Idea 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 ORDENAMIENTO
Mezcla
Simulación del funcionamiento del método de Mezcla o
Merge Sort usando un programa de C.

Programa-ordenamiento-mezcla

Programa en C del método mezcla
5. ALGORITMOS DE ORDENAMIENTO
Mezcla
Análisis de eficiencia
 Trabaja con una lista auxiliar, lo cual consume memoria y
  obviamente trabajo extra al copiar las listas.
5. ALGORITMOS DE ORDENAMIENTO
Heap
 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 ORDENAMIENTO
Heap
Idea 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 ORDENAMIENTO
Heap o Montículo
Idea 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 ORDENAMIENTO
Heap o Montículo
Procedimiento:
 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 ORDENAMIENTO
Heap o Montículo

Simulación del funcionamiento del método de Monticulo o
Heap Sort usando un programa de C.

Programa-ordenamiento-heap

Programa en C del método heap

Grafico del funcionamiento del Heap sort.
5. ALGORITMOS DE ORDENAMIENTO
Heap o Montículo
Aná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.

Más contenido relacionado

La actualidad más candente

Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoLutzo Guzmán
 
Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)edopaz
 
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 sortlinkinpark03
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTODaniel Guaycha
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no linealeslos4estatidinamicos
 
Ordenamiento con árbol binario
Ordenamiento con árbol binarioOrdenamiento con árbol binario
Ordenamiento con árbol binarioMauricio Solano
 
Ordenamiento burbuja
Ordenamiento burbujaOrdenamiento burbuja
Ordenamiento burbujaOscar Mora
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCristopher Morales Ruiz
 
Método de Ordenamiento Sort Shell
Método de Ordenamiento Sort ShellMétodo de Ordenamiento Sort Shell
Método de Ordenamiento Sort ShellAntonio Huertas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 

La actualidad más candente (20)

Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamiento
 
Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)
 
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
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no lineales
 
Ordenamiento con árbol binario
Ordenamiento con árbol binarioOrdenamiento con árbol binario
Ordenamiento con árbol binario
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Comparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de OrdenamientoComparativa entre Algoritmos de Ordenamiento
Comparativa entre Algoritmos de Ordenamiento
 
Ordenamiento burbuja
Ordenamiento burbujaOrdenamiento burbuja
Ordenamiento burbuja
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
 
Método de Ordenamiento Sort Shell
Método de Ordenamiento Sort ShellMétodo de Ordenamiento Sort Shell
Método de Ordenamiento Sort Shell
 
Tad Colas
Tad ColasTad Colas
Tad Colas
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 

Similar a METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

Programacion inf121 i8 ii 2013 ocho arreglos
Programacion inf121 i8 ii 2013 ocho arreglosProgramacion inf121 i8 ii 2013 ocho arreglos
Programacion inf121 i8 ii 2013 ocho arregloscarlos1518
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Eli Diaz
 
Angela y vicky I-B
Angela y vicky I-BAngela y vicky I-B
Angela y vicky I-BvictoriaRJ
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datosSistemasGrupo
 
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptxPresentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptxCarlosEspaa16
 
Escuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoEscuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoDarwin Toapanta
 
Estructura de datos (Arreglos)
Estructura de datos (Arreglos)Estructura de datos (Arreglos)
Estructura de datos (Arreglos)mauriciog456
 
Estructuras de Datos Elementos y Arreglos.ppt
Estructuras de Datos Elementos y Arreglos.pptEstructuras de Datos Elementos y Arreglos.ppt
Estructuras de Datos Elementos y Arreglos.pptAndersonHernandezara
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busquedaIrvingMoran4
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorJomicast
 
Abstracciones de datos
Abstracciones de datosAbstracciones de datos
Abstracciones de datosAriel Medina
 
Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)jairml
 
ESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALESESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALESEvans Balcazar
 

Similar a METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS) (20)

Programacion inf121 i8 ii 2013 ocho arreglos
Programacion inf121 i8 ii 2013 ocho arreglosProgramacion inf121 i8 ii 2013 ocho arreglos
Programacion inf121 i8 ii 2013 ocho arreglos
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
 
Estructuras
EstructurasEstructuras
Estructuras
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
Angela y vicky I-B
Angela y vicky I-BAngela y vicky I-B
Angela y vicky I-B
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptxPresentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Arrays
ArraysArrays
Arrays
 
Mètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsquedaMètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsqueda
 
Escuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoEscuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazo
 
Estructura de datos (Arreglos)
Estructura de datos (Arreglos)Estructura de datos (Arreglos)
Estructura de datos (Arreglos)
 
Estructuras de Datos Elementos y Arreglos.ppt
Estructuras de Datos Elementos y Arreglos.pptEstructuras de Datos Elementos y Arreglos.ppt
Estructuras de Datos Elementos y Arreglos.ppt
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Arreglos en Java
Arreglos en JavaArreglos en Java
Arreglos en Java
 
Apuntes Ped
Apuntes PedApuntes Ped
Apuntes Ped
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidor
 
Abstracciones de datos
Abstracciones de datosAbstracciones de datos
Abstracciones de datos
 
Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)
 
ESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALESESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALES
 

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

  • 1. UNIDAD TEMÁTICA 4: REPRESENTACIÓN Y MANIPULACIÓN DE ESTRUCTURAS: ALGORITMOS DE ORDENAMIENTO 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
  • 2. UNIDAD TEMÁTICA 4: REPRESENTACIÓN Y MANIPULACIÓN DE ESTRUCTURAS: ALGORITMOS DE ORDENAMIENTO Y DE BÚSQUEDA 6. Algoritmos de Búsqueda: * Lineal o Secuencial * Binaria
  • 3. 1. Introducción La información que se maneja de manera cotidiana puede ser organizada y analizada, de tal manera que nos ofrezca una serie de alternativas para en su momento utilizarla de forma adecuada. La idea es obtener el mayor beneficio del análisis y concentración de toda la información. Para esto podemos hacer uso de las estructuras de datos.
  • 4. 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.
  • 5. 3.Clasificación de Estructura de datos Las estructuras de datos se pueden clasificar en dos grandes grupos: Estáticas Arreglos (vectores y matrices) Registros (struct) Archivos (file) Dinámicas Lineales Pilas Colas Listas No lineales Árboles Grafos
  • 6. 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.
  • 7. 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.
  • 8. 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
  • 9. 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
  • 10. 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.
  • 11. 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
  • 12. 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
  • 13. 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.
  • 14. 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.
  • 15. 5. ALGORITMOS DE ORDENAMIENTO  Clasificación de ordenación: Ascendente.- cuando se tiene de menor a mayor los elementos de la lista, ya sea alfabéticamente o numéricamente. Descendente.- cuando se tiene de mayor a menor los elementos de la lista.
  • 16. 5. ALGORITMOS DE ORDENAMIENTO Burbuja  Llamado también de intercambio directo o bubble sort.  Es uno de los mas conocidos.  Mas sencillo.  Mas fácil de implementar.
  • 17. 5. ALGORITMOS DE ORDENAMIENTO Burbuja Idea Básica: Comparar elementos consecutivos en cada paso a lo largo del arreglo. Cada vez que se realiza una comparación, los elementos se intercambian entre si en caso de no estar en orden. Se le llama de burbuja, porque en la ordenación los elementos mas ligeros suben en la lista.
  • 18. 5. ALGORITMOS DE ORDENAMIENTO Burbuja Idea Básica: Se pasa varias veces a través del arreglo en forma secuencial. Cada paso consiste en la comparación de cada elemento con su sucesor, y el intercambio de los dos elementos si no están en el orden correcto.
  • 19. 5. ALGORITMOS DE ORDENAMIENTO Burbuja Simulación del funcionamiento del método de burbuja usando un programa de C. Programa-ordenamiento-burbuja Programa en C de burbuja
  • 20. 5. ALGORITMOS DE ORDENAMIENTO Burbuja Analisis de eficiencia.- Hay n-1 comparaciones y pasos en este método. Por lo que el numero total de comparaciones es O(n ). El numero de intercambios depende del orden original del archivo.
  • 21. 5. ALGORITMOS DE ORDENAMIENTO Burbuja Análisis de eficiencia.- La única característica redentora de este ordenamiento, es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples. Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad.
  • 22. 5. ALGORITMOS DE ORDENAMIENTO Selección  La idea básica de esta ordenación es : Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posición, a continuación, el elemento siguiente menor (o mayor) se lleva a la segunda posición y así sucesivamente hasta que queda ordenado. Cualquier ordenamiento pos selección puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente.
  • 23. 5. ALGORITMOS DE ORDENAMIENTO Selección Simulación del funcionamiento del método de selección usando un programa de C. Programa-ordenamiento-selección Programa en C del método de selección
  • 24. 5. ALGORITMOS DE ORDENAMIENTO Selección Análisis de eficiencia.- En el primer paso se efectúan n-1 comparaciones, en el segundo n-2 comparaciones y así sucesivamente. O sea que es del orden de O(n2). El numero de intercambios es siempre n-1. Solo se requiere un poco de memoria adicional, para guardar unas variables temporales.
  • 25. 5. ALGORITMOS DE ORDENAMIENTO Selección Análisis de eficiencia.- El ordenamiento puede ser categorizado como mas rápido que 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 use este método, solamente cuando son arreglos pequeños.
  • 26. 5. ALGORITMOS DE ORDENAMIENTO Rá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
  • 27. 5. ALGORITMOS DE ORDENAMIENTO Rápido o QuickSort Idea 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.
  • 28. 5. ALGORITMOS DE ORDENAMIENTO Rápido o QuickSort Simulación del funcionamiento del método rápido usando un programa de C. Programa-ordenamiento-rápido Programa en C del método rápido
  • 29. 5. ALGORITMOS DE ORDENAMIENTO Rápido o QuickSort Aná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.
  • 30. 5. ALGORITMOS DE ORDENAMIENTO Inserció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.
  • 31. 5. ALGORITMOS DE ORDENAMIENTO Inserción Idea 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.
  • 32. 5. ALGORITMOS DE ORDENAMIENTO Inserción Simulación del funcionamiento del método de inserción usando un programa de C. Programa-ordenamiento-inserción Programa en C del método de inserción
  • 33. 5. ALGORITMOS DE ORDENAMIENTO Inserción Ventajas:  Fácil de implementar.  Requerimientos minimos de memoria. Desventajas:  Lento  Realiza numerosas comparaciones.
  • 34. 5. ALGORITMOS DE ORDENAMIENTO Inserción Aná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.
  • 35. 5. ALGORITMOS DE ORDENAMIENTO Shell  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.
  • 36. 5. ALGORITMOS DE ORDENAMIENTO Shell Idea 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.
  • 37. 5. ALGORITMOS DE ORDENAMIENTO Shell Simulación del funcionamiento del método de Shell usando un programa de C. Programa-ordenamiento-shell Programa en C del método shell
  • 38. 5. ALGORITMOS DE ORDENAMIENTO Shell Aná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.
  • 39. 5. ALGORITMOS DE ORDENAMIENTO Mezcla  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».
  • 40. 5. ALGORITMOS DE ORDENAMIENTO Mezcla Idea 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.
  • 41. 5. ALGORITMOS DE ORDENAMIENTO Mezcla Simulación del funcionamiento del método de Mezcla o Merge Sort usando un programa de C. Programa-ordenamiento-mezcla Programa en C del método mezcla
  • 42. 5. ALGORITMOS DE ORDENAMIENTO Mezcla Análisis de eficiencia  Trabaja con una lista auxiliar, lo cual consume memoria y obviamente trabajo extra al copiar las listas.
  • 43. 5. ALGORITMOS DE ORDENAMIENTO Heap  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.
  • 44. 5. ALGORITMOS DE ORDENAMIENTO Heap Idea 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.
  • 45. 5. ALGORITMOS DE ORDENAMIENTO Heap o Montículo Idea 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 .
  • 46. 5. ALGORITMOS DE ORDENAMIENTO Heap o Montículo Procedimiento:  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.
  • 47. 5. ALGORITMOS DE ORDENAMIENTO Heap o Montículo Simulación del funcionamiento del método de Monticulo o Heap Sort usando un programa de C. Programa-ordenamiento-heap Programa en C del método heap Grafico del funcionamiento del Heap sort.
  • 48. 5. ALGORITMOS DE ORDENAMIENTO Heap o Montículo Aná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.