universidad tecnológica de panamá- estructura de datos proyecto 2
TRANSCRIPT
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
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.
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.
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
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
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.
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.
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
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
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
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
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.
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
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