Вы находитесь на странице: 1из 14

Universidad Tecnolgica de Panam Facultad en Ingeniera en Sistemas Computacionales Estructura de Datos I

Proyecto #2 Estructura de Arreglo

Profesora: Yolanda de Miguelena Estudiantes: vila, Mara 8-841-845 Samaniego, Angel 8-836-948 Sue, Andrs 8-848-1261

Panam 5 de mayo de 2010

Mtodos de Bsqueda y ordenamiento de Arreglos


Un algoritmo de bsqueda es aquel que est diseado 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 cuestin pertenece o no a dicho conjunto, adems de su localizacin dentro de ste. Este problema puede reducirse a devolver la existencia de un nmero en un vector. En computacin y matemticas un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relacin de orden, es decir, el resultado de salida ha de ser una permutacin o reordenamiento de la entrada que satisfaga la relacin de orden dada. Las relaciones de orden ms usadas son el orden numrico y el orden lexicogrfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos (como los de bsqueda y fusin) que requieren listas ordenadas para una ejecucin rpida. Tambin es til para poner datos en forma cannica y para generar resultados legibles por humanos. Desde los comienzos de la computacin, el problema del ordenamiento ha atrado gran cantidad de investigacin, 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 da de hoy. Los algoritmos de ordenamiento son comunes en las clases introductorias a la computacin, donde la abundancia de algoritmos para el problema proporciona una gentil introduccin a la variedad de conceptos ncleo de los algoritmos, como notacin de O mayscula, algoritmos divide y vencers, estructuras de datos, anlisis de los casos peor, mejor, y promedio, y lmites inferiores.

Cuadro de los diferentes Mtodos de Bsqueda y Ordenamiento: Basado en Wikipedia


Mtodo Descripcin Facilidad de codificacin y depuracin Consiste en buscar el Es el ms fcil de elemento comparndolo codificar y depurar ya secuencialmente (de ah que es relativamente su nombre) con cada corto elemento del array hasta que ste se encuentre, o hasta que se llegue al final del array Para implementar este Es corto pero por la algoritmo se compara el manera en que elemento a buscar con maneja los datos se un elemento cualquiera ve algo ms del array (normalmente enredado que el el elemento central), si mtodo secuencial el valor de ste es con todo y que es mayor que el del ms eficiente. 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. Funcionamiento para los datos de entrada El vector puede estar ordenado o no ordenado Ventajas Desventajas

Mtodos De Bsqueda

Secuencial

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

El vector debe estar ordenado

Este algoritmo reduce el tiempo de bsqueda considerablemente , ya que disminuye exponencialmente con el nmero 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 mtodo funciona solamente con arreglos ordenados, por lo cual si nos encontramos con arreglos que no estn en orden, este mtodo, no nos ayudara en nada.

Mtodos de Ordenamie nto

Burbuja

De esta manera obtenemos intervalos cada vez ms pequeos, 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. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambindolos de posicin si estn en el orden equivocado

bsqueda falla, sino, siempre tarda menos en buscarlo.

Es el ms sencillo de los algoritmos de implementar

Acepta vectores de cualquier tamao pero funciona mejor con pequeos.

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 computacin

Seleccin

Su funcionamiento es

Es sencillo de

Acepta vectores

Este algoritmo mejora

Cuando una lista ya est ordenada, a diferencia del ordenamiento por insercin que pasar por la lista una vez, y encontrar que no hay necesidad de intercambiar las posiciones de los elementos, el mtodo de ordenacin por burbuja est forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrtica en el mejor de los casos, esto lo cataloga como el algoritmo ms ineficiente que existe aunque para muchos programadores sea el ms sencillo de implementar. Una desventaja de este

el siguiente:

Buscar el mnimo elemento de la lista Intercambiarlo con el primero Buscar el mnimo en el resto de la lista Intercambiarlo con el segundo

codificar y depurar por no necesitar de funciones extras para su realizacin.

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 ms complejas funciona mejor

Y en general:

algoritmo respecto a otros como el de burbuja o de insercin directa es que no mejora su rendimiento cuando los datos ya estn ordenados o parcialmente ordenados. As como, por ejemplo, en el caso de la ordenacin de burbuja se requerira una nica pasada para detectar que el vector ya est ordenado y finalizar, en la ordenacin por seleccin se realizaran el mismo nmero de pasadas independientemente de si los datos estn ordenados o no.

Buscar el mnimo elemento entre una posicin i y el final de la lista Intercambiar el mnimo con el elemento de la posicin i

Insercin

Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado.

Es fcil de programar y depurar ya que es relativamente corto

Acepta vectores de cualquier cantidad pero funciona mejor

Para listas relativamente pequeas el orden

Es muy ineficiente al compararlo con otros algoritmos como quicksort

BinSort

Despus, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, detenindose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posicin a la derecha). En este punto se inserta el elemento k+1 debiendo desplazarse los dems elementos. Es un algoritmo de ordenamiento que distribuye todos los elementos a ordenar entre un nmero finito de casilleros. Cada casillero slo puede contener los elementos que cumplan unas determinadas condiciones. Las condiciones deben ser excluyentes entre s, para evitar que un elemento pueda ser

con pequeos.

por insercin es una buena eleccin. Tiene un mejor orden de complejidad que el de burbuja

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

Puede manejar cualquier tamao de vector

Por ordenar por casilleros se puede optimizar el tiempo de ordenamiento en cada casillero y ser ligeramente ms rpido

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

RadixSort

clasificado en dos casilleros distintos. Despus cada uno de esos casilleros se ordena individualmente con otro algoritmo de ordenacin (que podra ser distinto segn el casillero), o se aplica recursivamente este algoritmo para obtener casilleros con menos elementos. Se trata de una generalizacin del algoritmo Pigeonhole sort. Cuando los elementos a ordenar estn uniformemente distribuidos la complejidad computacional de este algoritmo es de O(n). Es un algoritmo de ordenamiento que ordena enteros procesando sus dgitos 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 ms efectivo mtodos 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 tamao variable.

Cuadro de los diferentes Mtodos de Bsqueda y Ordenamiento: Basado en MAILXMAIL-CURSO DE PROGRAMACION -CICESE
Mtodo Descripcin Facilidad de codificacin y depuracin La bsqueda Para encontrar el secuencial es la tcnica elemento ms simple para buscar buscado se un elemento en un compara con el arreglo. Consiste en de la mitad del recorrer el arreglo arreglo. Si es elemento a elemento e igual, se ir comparando con el encontr. valor buscado (clave). Funcionamiento para los datos de entrada 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 bsqueda es un solo valor, y ser la posicin del elemento buscado o cero. Dado que el arreglo no est en ningn orden en particular, existe la misma probabilidad de que el valor se encuentra ya sea en el primer elemento, como en el ltimo. El proceso comienza comparando el elemento central del arreglo con el valor buscado. Si ambos coinciden finaliza la Ventajas Desventajas

Secuencial

El mtodo de bsqueda lineal funciona bien con arreglos pequeos o para arreglos no ordenados.

La bsqueda secuencial no es la ms eficiente. Este es el mtodo de bsqueda ms lento.

Mtodos De Bsqueda

Autor: http://www.mailxmail.co m/curso-aprendeprogramar/metodosordenamientobusqueda

Binaria

La bsqueda binaria, sirve exclusivamente para arreglos ordenados, consiste en dividir el intervalo de bsqueda en dos

La bsqueda binaria es el mtodo ms eficiente para encontrar elementos en un arreglo ordenado.

Este mtodo funciona solamente con arreglos ordenados, por lo cual si nos encontramos con arreglos que no estn

partes, comparando el elemento buscado con el central, en caso de no ser iguales se redefinen los extremos del intervalo (segn 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 bsqueda. Autor: http://www.mailxmail.co m/curso-aprendeprogramar/metodosordenamientobusqueda

bsqueda.

en orden, este mtodo, no nos ayudara en nada.

Burbuja

Mtodos de Ordenamien to

El mtodo de burbuja tambin se le puede llamar como Mtodo de "intercambio directo". Este mtodo se basa en el principio de comparar pares de elementos adyacentes e intercambiarlos entre s hasta que estn todos ordenados.

El mtodo 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 ultimo elemento, el ms

Este ordenamiento es eficiente slo en listas pequeas (10 elementos).

Lentitud ante grandes cantidades de informacin a ordenar o al buscar informacin.

Consume bastante tiempo de computadora

Autor: http://boards4.melodys oft.com/2005AEDII0205 /metodo-de-burbuja46.html

grande. Este proceso deber repetirse recorriendo todo el arreglo hasta que no ocurra ningn intercambio. Los elementos que van quedando ordenados ya no se comparan. "Baja el ms pesado". En este mtodo el elemento ms pequeo (o ms grande) es el que se coloca en la posicin final que le corresponde.

Requiere muchas lecturas/escrituras en memoria

Seleccin

Los mtodos de ordenacin por seleccin se basan en dos principios bsicos: Seleccionar el elemento ms pequeo (o ms grande) del arreglo. Colocarlo en la posicin ms baja (o ms alta) del arreglo. Autor: http://www.mailxmail.co m/curso-aprendeprogramar/metodosordenamientobusqueda

Insercin

El fundamento de este mtodo consiste en insertar los elementos no ordenados del

arreglo en sub-arreglos del mismo que ya estn ordenados. Dependiendo del mtodo elegido para encontrar la posicin de insercin tendremos distintas versiones del mtodo de insercin. Autor: http://www.mailxmail.co m/curso-aprendeprogramar/metodosordenamientobusqueda

Bin Sort

En este mtodo Se considera que el campo clave de los registros que se van a ordenar son nmeros enteros en el rango 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 cuyo campo clave es el correspondiente al de la urna en la que se encuentra. Autor: http://novella.mhhe.com /sites/dl/free/84481407 7x/619434/A06.pdf Se denominan ordenamientos Radix a los mtodos que sacan ventaja de las propiedades digitales de estos nmeros. Estos mtodos no comparan llaves; sino que procesan y comparan pedazos de llaves. Los algoritmos de ordenamiento Radix trabajan sobre dgitos individuales de los nmeros que representan a las llaves cuando estas pertenecen a un sistema numrico base M (el Radix). Muchas

Radix Sort

Este mtodo se emplea para organizar informacin por ms de un criterio. Lo que hacemos es determinar la importancia de los criterios de ordenacin y aplicar ordenacin estable tantas veces como criterios se tengan, empezando por el criterio menos importante y determinando por el criterio ms

El mtodo consiste en definir k colas (numeradas de 0 a k 1) siendo k los posibles valores que puede tomar cada uno de los dgitos que componen la secuencia. Una vez tengamos las colas habra que repetir, para i a partir de 0 y hasta llegar al nmero mximo de dgitos o letras de nuestras cadenas: 1. Distribuir los elementos en las colas en funcin del dgito i. 2. Extraer ordenada y consecutivamente los elementos de las colas,

Los algoritmos de ordenamiento basados en Radix se consideran como de propsito particular debido a que su factibilidad depende de propiedades especiales de las llaves, en contraste con algoritmos de propsito 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 ordenamiento por Radix puede ejecutarse hasta en el doble de velocidad

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

aplicaciones de ordenamiento pueden operar en llaves compuestas de nmeros binarios. Autor: http://usuario.cicese.mx/~ orodrigu/AEDAI/RadixSo rt/radix_final/index.htm

importante.

introducindolos de nuevo en el vector. Los elementos quedan ordenados sin haber

que Quicksort

Bibliografa
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