universidad tecnológica de panamá- estructura de datos proyecto 2

22
Universidad Tecnológica de Panamá Facultad en Ingeniería en Sistemas Computacionales Estructura de Datos I Proyecto #2 Estructura de ArregloProfesora: Yolanda de Miguelena Estudiantes: Ávila, María 8-841- 845 Samaniego, Angel 8- 836-948 Sue, Andrés 8-848- 1261

Upload: angel-javier

Post on 30-Jul-2015

77 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

Universidad Tecnológica de Panamá

Facultad en Ingeniería en Sistemas Computacionales

Estructura de Datos I

Proyecto #2

“Estructura de Arreglo”

Profesora: Yolanda de Miguelena

Estudiantes:

Ávila, María 8-841-845

Samaniego, Angel 8-836-948

Sue, Andrés 8-848-1261

Panamá 5 de mayo de 2010

Page 2: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

Métodos de Búsqueda y ordenamiento de Arreglos

Un algoritmo de búsqueda es aquel que está diseñado para localizar un elemento concreto dentro de una estructura de datos. Consiste en solucionar un problema de existencia o no de un elemento determinado en un conjunto finito de elementos, es decir, si el elemento en cuestión pertenece o no a dicho conjunto, además de su localización dentro de éste.

Este problema puede reducirse a devolver la existencia de un número en un vector.

En computación y matemáticas un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos (como los de búsqueda y fusión) que requieren listas ordenadas para una ejecución rápida. También es útil para poner datos en forma canónica y para generar resultados legibles por humanos.

Desde los comienzos de la computación, el problema del ordenamiento ha atraído gran cantidad de investigación, tal vez debido a la complejidad de resolverlo eficientemente a pesar de su planteamiento simple y familiar. Aunque muchos puedan considerarlo un problema resuelto, nuevos y útiles algoritmos de ordenamiento se siguen inventado hasta el día de hoy. Los algoritmos de ordenamiento son comunes en las clases introductorias a la computación, donde la abundancia de algoritmos para el problema proporciona una gentil introducción a la variedad de conceptos núcleo de los algoritmos, como notación de O mayúscula, algoritmos divide y vencerás, estructuras de datos, análisis de los casos peor, mejor, y promedio, y límites inferiores.

Page 3: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

Cuadro de los diferentes Métodos de Búsqueda y Ordenamiento: Basado en Wikipedia

Método Descripción Facilidad de codificación y depuración

Funcionamiento para los datos de entrada

Ventajas Desventajas

Métodos De Búsqueda

Secuencial Consiste en buscar el elemento comparándolo secuencialmente (de ahí su nombre) con cada elemento del array hasta que éste se encuentre, o hasta que se llegue al final del array

Es el más fácil de codificar y depurar ya que es relativamente corto

El vector puede estar ordenado o no ordenado

La existencia se puede asegurar desde el momento que el elemento es localizado

No podemos asegurar la no existencia hasta no haber analizado todos los elementos del array

Binaria Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del array (normalmente el elemento central), si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del array que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del array que va desde el elemento tomado hasta el final.

Es corto pero por la manera en que maneja los datos se ve algo más enredado que el método secuencial con todo y que es más eficiente.

El vector debe estar ordenado

Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente con el número de iteraciones.

Este algoritmo está altamente recomendado para buscar en arrays enormes: En uno de 50.000.000 elementos, tarda 26 iteraciones en ejecutarse, suponiendo que la

Este método funciona solamente con arreglos ordenados, por lo cual si nos encontramos con arreglos que no están en orden, este método, no nos ayudaría en nada.

Page 4: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un intervalo indivisible, con el elemento buscado como elemento central. Si el elemento no se encuentra dentro de este último entonces se deduce que el elemento buscado no se encuentra en el arreglo.

búsqueda falla, sino, siempre tarda menos en buscarlo.

Métodos de Ordenamiento

Burbuja Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado

Es el más sencillo de los algoritmos de implementar

Acepta vectores de cualquier tamaño pero funciona mejor con pequeños.

Dada su simplicidad, el ordenamiento de burbuja es utilizado para introducir el concepto de algoritmo, o de algoritmo de ordenamiento para estudiantes de ciencias de la computación

Cuando una lista ya está ordenada, a diferencia del ordenamiento por inserción que pasará por la lista una vez, y encontrará que no hay necesidad de intercambiar las posiciones de los elementos, el método de ordenación por burbuja está forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrática en el mejor de los casos, esto lo cataloga como el algoritmo más ineficiente que existe aunque para muchos programadores sea el más sencillo de implementar.

Selección Su funcionamiento es Es sencillo de Acepta vectores Este algoritmo mejora Una desventaja de este

Page 5: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

el siguiente:

Buscar el mínimo elemento de la lista

Intercambiarlo con el primero

Buscar el mínimo en el resto de la lista

Intercambiarlo con el segundo

Y en general:

Buscar el mínimo elemento entre una posición i y el final de la lista

Intercambiar el mínimo con el elemento de la posición i

codificar y depurar por no necesitar de funciones extras para su realización.

de cualquier cantidad pero funciona mejor con desordenados completamente o muy complejos.

ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas funciona mejor

algoritmo respecto a otros como el de burbuja o de inserción directa es que no mejora su rendimiento cuando los datos ya están ordenados o parcialmente ordenados. Así como, por ejemplo, en el caso de la ordenación de burbuja se requeriría una única pasada para detectar que el vector ya está ordenado y finalizar, en la ordenación por selección se realizarían el mismo número de pasadas independientemente de si los datos están ordenados o no.

Inserción Inicialmente se tiene un solo elemento, que obviamente es un

Es fácil de programar y depurar ya que es relativamente corto

Acepta vectores de cualquier cantidad pero

Para listas relativamente pequeñas el orden

Es muy ineficiente al compararlo con otros algoritmos como quicksort

Page 6: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.

funciona mejor con pequeños.

por inserción es una buena elección.

Tiene un mejor orden de complejidad que el de burbuja

BinSort Es un algoritmo de ordenamiento que distribuye todos los elementos a ordenar entre un número finito de casilleros. Cada casillero sólo puede contener los elementos que cumplan unas determinadas condiciones. Las condiciones deben ser excluyentes entre sí, para evitar que un

Es algo complejo de codificar y depurar ya que necesita conocimientos más avanzados del manejo de clase y objetos para hacerlo más eficiente

Puede manejar cualquier tamaño de vector

Por ordenar por casilleros se puede optimizar el tiempo de ordenamiento en cada casillero y ser ligeramente más rápido

Puede no valer para nadasi todos los valores caen en un solo casillero ya que de todos modos usara el método de ordenamiento designado a menos que el casillero se le haga otro bin sort.

Page 7: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

elemento pueda ser clasificado en dos casilleros distintos. Después cada uno de esos casilleros se ordena individualmente con otro algoritmo de ordenación (que podría ser distinto según el casillero), o se aplica recursivamente este algoritmo para obtener casilleros con menos elementos. Se trata de una generalización del algoritmo Pigeonhole sort. Cuando los elementos a ordenar están uniformemente distribuidos la complejidad computacional de este algoritmo es de O(n).

RadixSort Es un algoritmo de ordenamiento que ordena enteros procesando sus dígitos de forma individual.

Es un algoritmo algo complejo de codificar y depurar.

No está limitado a enteros, por lo que puede procesar cualquier tipo de datos en los vectores

Es uno de los más efectivo métodos de ordenamiento en cuanto a manejabilidad de datos, aunque tiene algunas limitantes que el quick sort no tiene

No se vale la pena usar Radix si las cadenas son de tamaño variable.

Page 8: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

Cuadro de los diferentes Métodos de Búsqueda y Ordenamiento: Basado en MAILXMAIL-CURSO DE PROGRAMACION -CICESE

Método Descripción Facilidad de codificación y depuración

Funcionamiento para los datos de entrada

Ventajas Desventajas

Métodos De Búsqueda

Secuencial La búsqueda secuencial es la técnica más simple para buscar un elemento en un arreglo. Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado (clave).

Autor:http://www.mailxmail.com/curso-aprende-programar/metodos-ordenamiento-busqueda

Para encontrar el elemento buscado se compara con el de la mitad del arreglo. Si es igual, se encontró.

Se empieza con la primera casilla del arreglo y se observa una casilla tras otra hasta que se encuentra el elemento buscado o se han visto todas las casillas. El resultado de la búsqueda es un solo valor, y será la posición del elemento buscado o cero. Dado que el arreglo no está en ningún orden en particular, existe la misma probabilidad de que el valor se encuentra ya sea en el primer elemento, como en el último.

El método de búsqueda lineal funciona bien con arreglos pequeños o para arreglos no ordenados.

La búsqueda secuencial no es la más eficiente.Este es el método de búsqueda más lento.

Binaria La búsqueda binaria, sirve exclusivamente para arreglos ordenados, consiste en dividir el intervalo de búsqueda en dos

El proceso comienza comparando el elemento central del arreglo con el valor buscado. Si ambos coinciden finaliza la

La búsqueda binaria es el método más eficiente para encontrar elementos en un arreglo ordenado.

Este método funciona solamente con arreglos ordenados, por lo cual si nos encontramos con arreglos que no están

Page 9: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

partes, comparando el elemento buscado con el central, en caso de no ser iguales se redefinen los extremos del intervalo (según si el elemento central es mayor o menor que el buscado). El proceso termina cuando se encuentra el elemento o cuando se anula el intervalo de búsqueda.

Autor:http://www.mailxmail.com/curso-aprende-programar/metodos-ordenamiento-busqueda

búsqueda. en orden, este método, no nos ayudaría en nada.

Métodos de Ordenamiento

Burbuja El método de burbuja también se le puede llamar como Método de "intercambio directo".Este método se basa en el principio de comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén

El método de burbuja va comparando cada elemento del arreglo con el siguiente; si un elemento es mayor que el que le sigue, entonces se intercambian; esto producirá que en el arreglo quede como su

Este ordenamiento es eficiente sólo en listas pequeñas (10 elementos).

Lentitud ante grandes cantidades de información a ordenar o al buscar información.

Consume bastante tiempo de

Page 10: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

todos ordenados.

Autor:http://boards4.melodysoft.com/2005AEDII0205/metodo-de-burbuja-46.html

ultimo elemento, el más grande. Este proceso deberá repetirse recorriendo todo el arreglo hasta que no ocurra ningún intercambio. Los elementos que van quedando ordenados ya no se comparan. "Baja el más pesado".

computadora

Requiere muchas lecturas/escrituras en memoria

Selección Los métodos de ordenación por selección se basan en dos principios básicos:Seleccionar el elemento más pequeño (o más grande) del arreglo.Colocarlo en la posición más baja (o más alta) del arreglo.

Autor:http://www.mailxmail.com/curso-aprende-programar/metodos-ordenamiento-busqueda

En este método el elemento más pequeño (o más grande) es el que se coloca en la posición final que le corresponde.

Inserción El fundamento de este método consiste en

Page 11: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

insertar los elementos no ordenados del arreglo en sub-arreglos del mismo que ya estén ordenados. Dependiendo del método elegido para encontrar la posición de inserción tendremos distintas versiones del método de inserción.

Autor:http://www.mailxmail.com/curso-aprende-programar/metodos-ordenamiento-busqueda

Bin Sort En este método Se considera que el campo clave de los registros que se van a ordenar son números enteros en elrango 1 .. m. Son necesarias m urnas por lo que es necesario definir un vector de m urnas. Las urnas

Page 12: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

pueden ser representadas por listas enlazadas, cada elemento de la lista contiene un registro cuyocampo clave es el correspondiente al de la urna en la que se encuentra.

Autor: http://novella.mhhe.com/sites/dl/free/844814077x/619434/A06.pdf

Radix Sort Se denominan ordenamientos Radix a los métodos que sacan ventaja de las propiedades digitales de estos números. Estos métodos no comparan llaves; sino que procesan y comparan pedazos de llaves.

Los algoritmos de ordenamiento Radix trabajan sobre dígitos individuales de los números que representan a las llaves cuando estas

Este método se emplea para organizar información por más de un criterio. Lo que hacemos es determinar la importancia de los criterios de ordenación y aplicar ordenación estable tantas veces como criterios se tengan, empezando por el criterio menos

El método consiste en definir k colas (numeradas de 0 a k–1) siendo k losposibles valores que puede tomar cada uno de los dígitos que componen lasecuencia. Una vez tengamos las colas habría que repetir, para i a partir de 0 yhasta llegar al número máximo de dígitos o letras de nuestras cadenas:1. Distribuir los elementos en las colas en función del dígito i.

Los algoritmos de ordenamiento basados en Radix se consideran como de propósito particular debido a que su factibilidad depende de propiedades especiales de las llaves, en contraste con algoritmos de propósito general como Quicksort que se usan con mayor frecuencia debido a su adaptabilidad a una mayor variedad de aplicaciones.

En algunas aplicaciones a la medida, el

No vale la pena intentar usar el ordenamiento Radix si existe problemas potenciales de espacio de almacenamiento o si las llaves son de tamaño variable y/o no son aleatorias.

Page 13: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

pertenecen a un sistema numérico base M (el Radix). Muchas aplicaciones de ordenamiento pueden operar en llaves compuestas de números binarios.

Autor:http://usuario.cicese.mx/~orodrigu/AEDAI/RadixSort/radix_final/index.htm

importante y determinando por el criterio más importante.

2. Extraer ordenada y consecutivamente los elementos de las colas,introduciéndolos de nuevo en el vector.Los elementos quedan ordenados sin haber

ordenamiento por Radix puede ejecutarse hasta en el doble de velocidad que Quicksort

Page 14: Universidad Tecnológica de Panamá- ESTRUCTURA DE DATOS PROYECTO 2

Bibliografía

http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqueda

http://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento

http://usuario.cicese.mx/~orodrigu/AEDAI/RadixSort/radix_final/index.htm

http://www.mailxmail.com/curso-aprende-programar/metodos-ordenamiento-busqueda

http://boards4.melodysoft.com/2005AEDII0205/metodo-de-burbuja-46.html