Sunteți pe pagina 1din 13

CORPORATIVO INTERNACIONAL UNIVERSITARIO

ASIGNATURA: ORGANIZACIN DE ARCHIVOS Y ESTRUCTURAS DE DATOS

DOCENTE: L.I. GABRIEL FLORES GONZALEZ

ALUMNO: HERNAN DARIO GONZALEZ VASQUEZ

SEGUNDO CUATRIMESTRE

ENERO DE 2012

INDICE
TEMAS Y SUBTEMAS INTRODUCCIN 6.0 ORDENACION Y BUSQUEDA 6.1 Ordenacin por insercin 6.2 Ordenacin por seleccin 6.3 Bsqueda de hash CONCLUSIONES BIBLIOGRAFA PGINA 3 4 4 6 9 12 13

INTRODUCCION

Los algoritmos de ordenamiento nos permiten, como su nombre lo dice, ordenar. En este caso, nos servirn para ordenar registros o datos con valores asignados aleatoriamente. Nos centraremos en los mtodos ms populares, como lo son: Ordenamiento por insercin Ordenamiento por seleccin Bsqueda de hash

y y y

Este informe nos permitir conocer ms a fondo cada mtodo distinto de ordenamiento, desde uno simple hasta el ms complejo. Analizaremos cules son sus ventajas y desventajas ms comunes. Incluso analizaremos el mtodo de bsqueda conocido como Bsqueda de hash.

6.0 ORDENACION Y BUSQUEDA Es la operacin d e a r r e g l a r l o s r e g i s t r o s d e u n a t a b l a e n a l g n orden secuencial de acuerdo a un criterio de ordenamiento. El ordenamiento se efecta con base en el valor d e a l g n c a m p o e n u n r e g i s t r o . E l p r o p s i t o p r i n c i p a l d e u n o r d e n a m i e n t o e s e l d e facilitar las bsquedas de los miembros del conjunto ordenado. E l o r d e n a r u n g r u p o de datos signifi ca mover l os datos o sus r efer encia s par a que queden en una secuencia tal que represente un orden, el cual p u e d e s e r n u m rico, alfabtico o incluso alfanumrico, ascendente o descendente. Un algoritmo de bsqueda es aquel que est diseado para localizar un elemento con ciertas propiedades dentro de una estructura de datos; por ejemplo, ubicar el registro correspondiente a cierta persona en una base de datos, o el mejor movimiento en una partida de ajedrez. La variante ms simple del problema es la bsqueda de un nmero en un vector.

6.1 ORDENACIN POR INSERCIN Este algoritmo tambin es sencillo. Consiste en lo siguiente: y y y y y Buscas el elemento ms pequeo de la lista. Lo intercambias con el elemento ubicado en la primera posicin de la lista. Buscas el segundo elemento ms pequeo de la lista. Lo intercambias con el elemento que ocupa la segunda posicin en la lista. Repites este proceso hasta que hayas ordenado toda la lista.

Estabilidad: Si tengo dos registros con claves iguales, el que ocupe la posicin ms baja ser el primero que sea identificado como menor. Es decir que ser el primero en ser desplazado. El segundo registro ser el menor en el siguiente ciclo y quedar en la posicin adyacente. Por lo tanto se mantendr el orden relativo. Requerimientos de Memoria: Al igual que el ordenamiento burbuja, este algoritmo slo necesita una variable adicional para realizar los intercambios. Tiempo de Ejecucin: El ciclo externo se ejecuta n veces para una lista de n elementos. Cada bsqueda requiere comparar todos los elementos no clasificados. Luego la complejidad es O(n2). Este algoritmo presenta un
4

comportamiento constante independiente del orden de los datos. Luego la complejidad promedio es tambin O(n2). Ventajas: y y y y Fcil implementacin. No requiere memoria adicional. Realiza pocos intercambios. Rendimiento constante: poca diferencia entre el peor y el mejor caso.

Desventajas: y y Lento. Realiza numerosas comparaciones.

Este es un algoritmo lento. No obstante, ya que slo realiza un intercambio en cada ejecucin del ciclo externo, puede ser una buena opcin para listas con registros grandes y claves pequeas. Si miras el programa de demostracin notars que es el ms rpido en la parte grfica (por lo menos en un PC lento y con una tarjeta grfica mala como el mo x-|). La razn es que es mucho ms lento dibujar las barras que comparar sus largos (el desplazamiento es ms costoso que la comparacin), por lo que en este caso especial puede vencer a algoritmos como Quicksort.

Ordenacin por insercin directa (InsertionSort)

Bien, ya terminamos con ste. Otra vez te recomiendo que hagas un programa y trates de implementar este algoritmo, de preferencia sin mirar el cdigo ni el pseudocdigo otra vez. El algoritmo de ordenacin por el mtodo de insercin directa es un algoritmo relativamente sencillo y se comporta razonablemente bien en gran cantidad de situaciones. Completa la tripleta de los algoritmos de ordenacin ms bsicos y de orden de complejidad cuadrtico, junto con SelectionSort y BubbleSort. Se basa en intentar construir una lista ordenada en el interior del array a ordenar. De estos tres algoritmos es el que mejor resultado da a efectos prcticos. Realiza una cantidad de comparaciones bastante equilibrada con respecto a los intercambios, y tiene un par de caractersticas que lo hacen aventajar a los otros dos en la mayor parte de las situaciones.
5

Este algoritmo se basa en hacer comparaciones, as que para que realice su trabajo de ordenacin son imprescindibles dos cosas: un array o estructura similar de elementos comparables y un criterio claro de comparacin, tal que dados dos elementos nos diga si estn en orden o no.

6.2 ORDENACIN POR SELECCIN El algoritmo de Seleccin para ordenar en uno de los ms sencillos; as como tambin es uno de los ms lentos. Su funcionamiento se basa en seleccionar siempre el elemento ms pequeo para acomodarlo dentro de la secuencia. Para realizar el anlisis utilicemos el siguiente arreglo de nmeros enteros. La parte gris del arreglo de la izquierda son los elementos a intercambiar mientras que los elementos en gris del arreglo de la derecha ya estn ordenados. Anlisis

Primero se encuentra el elemento ms pequeo del arreglo (el ms pequeo es 1) y lo coloca en la posicin 0 intercambindolo por el nmero que estaba en esa posicin.

Ahora el algoritmo encuentra nuevamente el elemento ms pequeo del arreglo a partir de la posicin 1 (el ms pequeo es 2) y lo intercambia con el elemento que se encuentra en la posicin 1.

Nuevamente el algoritmo encuentra el elemento ms pequeo del arreglo pero a partir de la posicin 2 (ahora el ms pequeo es 3) y lo intercambia con el elemento que se encuentra en la posicin 2.
6

En este caso existen dos elementos con el mismo valor; el algoritmo toma el primer de ellos.

Una vez ms buscamos el elemento ms pequeo, pero ahora desde la posicin 3 (el elemento ms pequeo sigue siendo 3 debido a que se repite) y lo intercambiamos por el elemento que se encuentra en la posicin 3.

Ahora, a partir de la posicin 4 buscamos el elemento ms pequeo que es 5, pero se encuentra colocado en esa misma posicin, por lo que esta ordenado y no hay intercambio.

Ahora el algoritmo debe encontrar el elemento ms pequeo a partir de la posicin 5 (el elemento ms pequeo es 6) e intercambiarlo con el elemento en la posicin 5.

Ahora nuestro arreglo ha quedado ordenado. El ltimo elemento debe ser el mayor y no es necesario comprobarlo debido a que la parte del algoritmo que encuentra el elemento ms pequeo y de intercambiarlos de repite n 1; donde n es el nmero de elementos. y y Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable. Requerimientos de Memoria: Una variable adicional para realizar los intercambios.
7

Tiempo de Ejecucin: Para una lista de n elementos el ciclo externo se ejecuta n-1 veces. El ciclo interno se ejecuta como mximo una vez en la primera iteracin, 2 veces en la segunda, 3 veces en la tercera, etc. Esto produce una complejidad O(n2).

Ventajas: y y Fcil implementacin. Requerimientos mnimos de memoria.

Desventajas: y y Lento. Realiza numerosas comparaciones.

Este tambin es un algoritmo lento, pero puede ser de utilidad para listas que estn ordenadas o semiordenadas, porque en ese caso realiza muy pocos desplazamientos.

Ordenamiento por seleccin directa

El algoritmo de ordenacin por el mtodo de seleccin directa es un algoritmo relativamente sencillo y uno de los ms fciles de recordar e implementar. Se basa en realizar varias pasadas, intentando encontrar en cada una de ellas el elemento que segn el criterio de ordenacin es mnimo y colocndolo posteriormente en su sitio. A efectos prcticos, no suele dar resultados buenos si se compara con otros mtodos de ordenacin. Realiza una enorme cantidad de comparaciones, pero en contrapartida, muy pocos intercambios. Eso hace que su utilizacin se restrinja en general a dos situaciones: o bien necesitamos un algoritmo sencillito para ordenar unos pocos datos y cogemos ste mismo que no est mal y es fcil de recordar, o bien tenemos una situacin en la cual escribir en el array es mucho ms gravoso que leer, como puede ser un escenario en el que intervengan determinados dispositivos de almacenamiento o memorias tipo flash, eeprom, etc. para el soporte de los datos. Este algoritmo se basa en hacer comparaciones, as que para que realice su trabajo de ordenacin son imprescindibles dos cosas: un array o estructura similar de elementos comparables y un criterio claro de comparacin, tal que dados dos elementos nos diga si estn en orden o no.
8

6.3 BSQUEDA DE HASH Es un mtodo de bsqueda que aumenta la velocidad de bsqueda, pero que no requiere que los elementos estn ordenados. Consiste en asignar a cada elemento un ndice mediante una transformacin del elemento. Esta correspondencia se realiza mediante una funcin de conversin, llamada funcin hash. La correspondencia ms sencilla es la identidad, esto es, al nmero 0 se le asigna el ndice 0, al elemento 1 el ndice 1, y as sucesivamente. Pero si los nmeros a almacenar son demasiado grandes esta funcin es inservible. Por ejemplo, se quiere guardar en un array la informacin de los 1000 usuarios de una empresa, y se elige el nmero de DNI como elemento identificativo. Es inviable hacer un array de 100.000.000 elementos, sobre todo porque se desaprovecha demasiado espacio. Por eso, se realiza una transformacin al nmero de DNI para que nos d un nmero menor, por ejemplo coger las 3 ltimas cifras para guardar a los empleados en un array de 1000 elementos. Para buscar a uno de ellos, bastara con realizar la transformacin a su DNI y ver si est o no en el array. La funcin de hash ideal debera ser billectiva, esto es, que a cada elemento le corresponda un ndice, y que a cada ndice le corresponda un elemento, pero no siempre es fcil encontrar esa funcin, e incluso a veces es intil, ya que puedes no saber el nmero de elementos a almacenar. La funcin de hash depende de cada problema y de cada finalidad, y se pueden utilizar con nmeros o cadenas, pero las ms utilizadas son: y Restas sucesivas: esta funcin se emplea con claves numricas entre las que existen huecos de tamao conocido, obtenindose direcciones consecutivas. Por ejemplo, si el nmero de expediente de un alumno universitario est formado por el ao de entrada en la universidad, seguido de un nmero identificativo de tres cifras, y suponiendo que entran un mximo de 400 alumnos al ao, se le asignaran las claves: 1998-000 --> 0 = 1998000-1998000 1998-001 --> 1 = 1998001-1998000 1998-002 --> 2 = 1998002-1998000 ... 1998-399 --> 399 = 1998399-1998000 1999-000 --> 400 = 1999000-1998000+400 ... yyyy-nnn --> N = yyyynnn-1998000+(400*(yyyy-1998))

Aritmtica modular: el ndice de un nmero es resto de la divisin de ese nmero entre un nmero N prefijado, preferentemente primo. Los nmeros se guardarn en las direcciones de memoria de 0 a N-1. Este mtodo tiene el problema de que cuando hay N+1 elementos, al menos un ndice es sealado por dos elementos (teorema del palomar). A este fenmeno se le llama colisin, y es tratado ms adelante. Si el nmero N es el 13, los nmeros siguientes quedan transformados en: 13000000 --> 0 12345678 --> 7 13602499 --> 1 71140205 --> 6 73062138 --> 6

Mitad del cuadrado: consiste en elevar al cuadrado la clave y coger las cifras centrales. Este mtodo tambin presenta problemas de colisin: 123*123=15129 --> 51 136*136=18496 --> 84 730*730=532900 --> 29 301*301=90601 --> 06 625*625=390625 --> 06 Truncamiento: consiste en ignorar parte del nmero y utilizar los elementos restantes como ndice. Tambin se produce colisin. Por ejemplo, si un nmero de 8 cifras se debe ordenar en un array de 1000 elementos, se pueden coger la primer, la tercer y la ltima cifras para formar un nuevo nmero: 13000000 --> 100 12345678 --> 138 13602499 --> 169 71140205 --> 715 73162135 --> 715

Plegamiento: consiste en dividir el nmero en diferentes partes, y operar con ellas (normalmente con suma o multiplicacin). Tambin se produce colisin. Por ejemplo, si dividimos los nmeros de 8 cifras en 3, 3 y 2 cifras y se suman, dar otro nmero de tres cifras (y si no, se cogen las tres ltimas cifras):

10

13000000 --> 130=130+000+00 12345678 --> 657=123+456+78 71140205 --> 118 --> 1118=711+402+05 13602499 --> 259=136+024+99 25000009 --> 259=250+000+09

11

CONCLUSIONES

Analizamos y comprendimos los diferentes mtodos para ordenar datos o registros de manera fcil y rpida, aunque algunos de estos de estos mtodos resultaron ser complejos y lentos. Los mtodos de ordenamiento analizados fueron y Ordenamiento por insercin, con su subtema ordenamiento por insercin directa y Ordenamiento por seleccin, con su subtema ordenamiento por seleccin directa. Y un mtodo de bsqueda que se analizo de igual manera fue el siguiente: y Bsqueda de hash, junto con un ejemplo.

12

BIBLIOGRAFA

1. http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqueda 2. http://es.scribd.com/doc/1739233/Ordenamiento-en-C 3. http://snippets-tricks.org/ordenacion-seleccion/ 4. http://latecladeescape.com/algoritmos/1122-ordenacion-por-seleccion-directaselectionsort 5. http://c.conclase.net/orden/?cap=seleccion#inicio 6. http://latecladeescape.com/algoritmos/1123-ordenacion-por-insercion-directainsertionsort

13

S-ar putea să vă placă și