SlideShare a Scribd company logo
1 of 24
Download to read offline
Dirección General de Educación Superior Tecnológica 
INSTITUTO TECNOLÓGICO DE SALINA CRUZ 
UNIDAD 1 
FACILITADOR: 
M.C. SUSANA MONICA ROMAN NAJERA 
TRABAJO: 
MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO. 
NOMBRE DE LA ALUMNA: 
BENITA VILLALOBOS PEREZ 
N. DE CONTROL: 131020103 
SEMESTRE: 3 GRUPO: E2 
CARRERA: 
ING. EN TECNOLOGIAS DE LA INFORMACIÓN Y DE LAS COMUNICACIONES. 
SALINA CRUZ, OAXACA A DICIEMBRE DE 2014.
ÍNDICE 
INTRODUCCIÓN ........................................................................................................................... 1 
MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO .................................................................. 2 
MÉTODO BURBUJA..................................................................................................................... 3 
MÉTODO DE SELECCIÓN ......................................................................................................... 3 
MÉTODO POR INSERCIÓN ....................................................................................................... 4 
MÉTODO DE INTERCAMBIO ..................................................................................................... 5 
MÉTODO SHELL........................................................................................................................... 6 
BÚSQUEDA SECUENCIAL ........................................................................................................ 9 
BÚSQUEDA BINARIA ................................................................................................................ 10 
ORDENACIÓN RÁPIDA (QUICKSORT) ...................................................................................... 11 
ALGORITMO QUICKSORT. ...................................................................................................... 13 
MÉTODO DE BINSORT. ............................................................................................................ 16 
MÉTODO DE RADIXSORT ....................................................................................................... 17 
CONCLUSIÓN ............................................................................................................................. 21 
OTRAS FUENTES CONSULTADAS ....................................................................................... 22
1 
INTRODUCCIÓN 
Con mucha frecuencia los programadores trabajan con grandes cantidades de datos almacenados en arrays y registros, y por ello será necesario determinar si un array contiene un valor que coincida con un cierto valor clave. El proceso de encontrar un elemento específico de un arrays se denomina búsqueda. 
La operación de búsqueda nos permite encontrar datos que están previamente almacenados. La operación puede ser un éxito, si se localiza el elemento buscado o un fracaso en otros casos. 
La búsqueda se puede realizar sobre un conjunto de datos ordenados, lo cual hace la tarea más fácil y consume menos tiempo; o se puede realizar sobre elementos desordenados, tarea más laboriosa y de mayor insumo de tiempo.
2 
MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO 
BÚSQUEDA 
Búsqueda Interna será aquella acción que se realice sobre datos que se encuentran en la memoria principal, por ejemplo en un arreglo. 
Búsqueda Externa es cuando todos sus elementos se encuentran en memoria secundaria (archivos almacenados en dispositivos de cinta, disco, etc.-) 
La operación de búsqueda de un elemento X en un conjunto consiste en determinar si el elemento X pertenece al conjunto y en este caso dar su posición, o bien, determinar que el elemento X no pertenece al conjunto. 
Los métodos directos tienen la característica de que su resolución es más corta, de fácil elaboración y comprensión, aunque son ineficientes cuando el número de elementos de un arreglo N, es mediano o considerablemente grande. 
Los métodos logarítmicos son más complejos con respecto a los directos, pero requieren menos comparaciones y movimientos para ordenar sus elementos, pero su elaboración y compresión resulta más sofisticada y abstracta. 
Se debe tener en cuenta que la eficiencia entre los distintos métodos se mide por el tiempo de ejecución del algoritmo y este depende fundamentalmente del número de comparaciones y movimientos que se realicen entre sus elementos. 
Por lo tanto podemos decir que cuando N es pequeño debe utilizarse métodos directos y cuando N es mediana o grande deben emplearse métodos logarítmicos.
3 
Métodos Directos o Básicos: 
 Ordenación por Intercambio Directo (Burbuja) 
 Ordenación por Selección (Obtención sucesivas de menores) 
 Ordenación por Inserción (Baraja) 
Métodos Logarítmicos o Avanzados: 
 Método de Shell (Inserción con incrementos decrecientes) 
 Método de QuickSort (Clasificación Rápida) 
 Método de Binsort (Clasificación por mezcla) 
 Método de Radixsort 
MÉTODO BURBUJA 
El método de la burbuja es uno de los más simples, es tan fácil como comparar todos los elementos de una lista contra todos, si se cumple que uno es mayor o menor a otro, entonces los intercambia de posición. 
Se denomina burbuja debido a que los valores más pequeños «burbujean» gradualmente (suben) hacia la cima o parte superior del array de modo similar a como suben las burbujas en el agua, mientras que los valores mayores se hunden en la parte inferior del array. 
MÉTODO DE 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. 
A diferencia del método de la burbuja, 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. 
Consideremos un array A con 5 valores enteros 51, 21, 39, 80, 36:
4 
Figura 1 
Figura 2 
MÉTODO POR INSERCIÓN 
El método de ordenación por inserción es similar al proceso típico de ordenar tarjetas de nombres (cartas de una baraja) por orden alfabético, que consiste en insertar un nombre en su posición correcta dentro de una lista o archivo que ya está ordenado. 
Así el proceso en el caso de la lista de enteros A = 50, 20, 40, 80, 30.
5 
Figura 3 
MÉTODO DE INTERCAMBIO 
Se encarga de ordenar los elementos de una lista en orden ascendente. Este algoritmo se basa en la lectura sucesiva de la lista a ordenar, comparando el elemento inferior de la lista con los restantes y efectuando intercambio de posiciones cuando el orden resultante de la comparación no sea el correcto. 
Figura 4
6 
Figura 5 
MÉTODO SHELL 
El nombre se debe a su inventor, D. L. Shell. Se suele denominar también ordenación por inserción con incrementos decrecientes. Se considera que el método Shell es una mejora de los métodos de inserción directa. 
Shell modifica los saltos contiguos resultantes de las comparaciones por saltos de mayor tamaño y con ello se consigue que la ordenación sea más rápida. Generalmente se toma como salto inicial n/2 (siendo n el número de elementos), luego se reduce el salto a la mitad en cada repetición hasta que el salto es de tamaño 1. 
Ejemplo: 
74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30 
Se debe empezar con k=n/2, siendo n el número de elementos de arreglo, y utilizando siempre la división entera.... después iremos variando k haciéndolo más
7 
pequeño mediante sucesivas divisiones por 2, hasta llegar a k=1. Pero vamos a ello... En nuestro ejemplo, n=11 (porque hay 11 elementos). Así que k=n/2=11/2=5. 
Empezamos con k=5. Así pues, vamos a dividir nuestro arreglo original en 5 sub- arreglo, en los cuales, sus elementos estarán separados por 5 lugares del arreglo original (el salto o gap es 5). 
Tomamos el primer elemento (el 74) contamos 5 lugares y tomamos también otro elemento (el 97) volvemos a contar 5 y tomamos otro (el 30) y acabamos porque se nos acaba el arreglo. El primer sub-arreglo con k=5 es el formado por 74, 97 y 30. 
74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30 
Ahora, ordenaremos los elementos del sub-arreglo (rojo) pero sólo entre ellos, utilizando el algoritmo de Inserción directa. 
74, 97, 30 
30, 14, 21, 44, 38, 74, 11, 78, 65, 88, 97 
El 30, un elemento relativamente pequeño se ha ido hacia el principio y el 97 hacia el final. 
Formemos ahora otro sub-arreglo con salto k=5... Partiendo del segundo elemento (el 14) y contando 5 (tomamos también el 11) y hasta ahí, porque se acaba el arreglo. 
30, 1, 21, 44, 38, 74, 11, 78, 65, 88, 97 
Vamos a ordenarlos el 11 primero y el 14 después. 
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 
Ahora a por otro el 21 y el 78 
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
8 
Están en orden entre ellos, así que se quedan como están. 
Ahora le toca al sub-arreglo formado por el 44 y el 65 
30, 11 21, 44, 38, 74, 14, 78, 65, 88, 97 
Que también están en orden entre ellos. 
Y finalmente el 38 y el 88, que también están en orden. 
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 
Aún no hemos terminado de ordenarlos. 
Nuestra k valía 5, así que ahora k←k/2=5/2=2, nuestra nueva k vale 2. Repetimos todo el desarrollo anterior, pero ahora nos saldrán 2 sub-arreglo cuyos elementos están separados por 2 lugares. 
Tomamos el primer elemento (el 30) contamos 2 lugares y tomamos también otro elemento (el 21) volvemos a contar 2 y tomamos otro (el 38), volvemos a contar y ahora tomamos (el 14), seguimos contado y tomamos (el 65), seguimos contando y tomamos (el 97) y acabamos porque se nos acaba el arreglo. Y posteriormente se forma el según sub-arreglo que empieza con el 11. 
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 
Se ordena (primero los rojos), con el método de inserción: 
14, 11, 21, 44, 30, 74, 38, 78, 65, 88, 97 
Finalmente ordenamos los negros, pero estos ya están ordenados: 
14, 11, 21, 44, 30, 74, 38, 78, 65, 88, 97 
Finalmente, calculamos un nuevo k dividiendo el que tenemos entre 2. k←k/2=2/2=1 Hemos llegado a k=1. Cuando k es 1 sólo podemos obtener 1 sub- arreglo cuyos elementos están separados 1 posición: el propio arreglo original.
9 
Dicho de otra manera... cuando k es 1, el algoritmo de Shell se comporta exactamente igual que el de inserción directa sobre todo el arreglo. 
14, 11, 21, 44, 30, 74, 38, 78, 65, 88, 97 
El método de inserción directa se comporta tanto mejor cuanto más cerca está cada elemento de su sitio definitivo. Finalmente, el arreglo queda de ésta manera: 
11, 14, 21, 30, 38, 44, 65, 74, 78, 88, 97 
Cada elemento descolocado ha tenido que moverse pocos lugares. Muchos de ellos ni siquiera se han movido. 
BÚSQUEDA SECUENCIAL 
Busca un elemento de una lista utilizando un valor destino llamado clave. En una búsqueda secuencial (a veces llamada búsqueda lineal), los elementos de una lista o vector se exploran (se examinan) en secuencia, uno después de otro. La búsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona cuyo número de teléfono es 958-220000 en un directorio o listado telefónico de su ciudad. 
La búsqueda secuencial se utiliza normalmente cuando el array no está ordenado. Comienza en el principio del array y busca hasta que se encuentra el dato buscado y se llega al final de la lista.
10 
Figura 6 
BÚSQUEDA BINARIA 
Si la lista está ordenada, la búsqueda binaria proporciona una técnica de búsqueda mejorada. Una búsqueda binaria típica es la búsqueda de una palabra en un diccionario. 
Dada la palabra, se abre el libro cerca del principio, del centro o del final dependiendo de la primera letra del primer apellido o de la palabra que busca. Se puede tener suerte y acertar con la página correcta; pero, normalmente, no será así y se mueve el lector a la página anterior o posterior del libro. 
Por ejemplo, si la palabra comienza con «J» y se está en la «L» se mueve uno hacia atrás. El proceso continúa hasta que se encuentra la página buscada o hasta que se descubre que la palabra no está en la lista. 
Si un array está ordenado, se puede utilizar un algoritmo más eficiente denominado búsqueda binaria. 
Se tiene un arreglo ordenado de 19 casillas.
11 
Figura 7 
Si buscamos el número 107. ¿En que posición del arreglo se encuentra? ¿Cuántas comparaciones se hacen? 
Búsqueda Secuencial Búsqueda Binaria 
Posición = 16 Posición = 16 
Comparaciones = 17 comparaciones = 3 
Figura 8 
ORDENACIÓN RÁPIDA (QUICKSORT) 
El algoritmo conocido como quicksort (ordenación rápida) recibe el nombre de su autor, Tony Hoare. La idea del algoritmo es simple, se basa en la división em particiones de la lista a ordenar, por lo que se puede considerar que aplica la técnica divide y vencerás. El método es, posiblemente, el más pequeño de código, más rápido, más elegante, más interesante y eficiente de los algoritmos de ordenación conocidos. 
El método se basa en dividir los n elementos de la lista a ordenar en dos partes o particiones separadas por un elemento: una partición izquierda, un elemento central denominado pivote o elemento de partición, y una partición derecha. La
12 
partición o división se hace de tal forma que todos los elementos de la primera sublista (partición izquierda) son menores que todos los elementos de la segunda sublista (partición derecha). 
Las dos sublistas se ordenan entonces independentemente. Para dividir la lista en particiones (sublistas) se elige uno de los elementos de la lista y se utiliza como pivote o elemento de partición. Si se elige una lista cualquiera con los elementos en orden aleatorio, se puede seleccionar cualquier elemento de la lista como pivote, por ejemplo, el primer elemento de la lista. 
Si la lista tiene algún orden parcial conocido, se puede tomar otra decisión para el pivote. Idealmente, el pivote se debe elegir de modo que se divida la lista exactamente por la mitad, de acuerdo al tamaño relativo de las claves. Por ejemplo, si se tiene una lista de enteros de 1 a 10, 5 o 6 serían pivotes ideales, mientras que 1 o 10 serían elecciones «pobres» de pivotes. 
Una vez que el pivote ha sido elegido, se utiliza para ordenar el resto de la lista en dos sublistas: una tiene todas las claves menores que el pivote y la otra, todos los elementos (claves) mayores que o iguales que el pivote (o al revés). Estas dos listas parciales se ordenan recursivamente utilizando el mismo algoritmo; es decir, se llama sucesivamente al propio algoritmo quicksort. La lista final ordenada se consegue concatenando la primera sublista, el pivote y la segunda lista, en ese orden, en uma única lista. La primera etapa de quicksort es la división o «particionado» recursivo de la lista hasta que todas las sublistas constan de sólo un elemento. 
Por ejemplo: 
Se ordena una lista de números enteros aplicando el algoritmo quicksort, como pivote se elige el primer elemento de la lista.
13 
Figura 9 
ALGORITMO QUICKSORT. 
La primera etapa en el algoritmo de partición es obtener el elemento pivote; una vez que se ha seleccionado se ha de buscar el sistema para situar en la sublista izquierda todos los elementos menores que el pivote y en la sublista derecha todos los elementos mayores que el pivote. Supongamos que todos los elementos de la
14 
lista son distintos, aunque será preciso tener en cuenta los casos en que existan elementos idénticos. 
Los pasos que sigue el algoritmo quicksort: 
 Seleccionar el elemento central de a [0: n-1] como pivote. 
 Dividir los elementos restantes en particiones izquierda y derecha, de modo que ningún elemento de la izquierda tenga una clave (valor) mayor que el pivote y que ningún elemento a la derecha tenga una clave más pequeña que la del pivote. 
 Ordenar la partición izquierda utilizando quicksort recursivamente. 
 Ordenar la partición derecha utilizando quicksort recursivamente. 
 La solución es partición izquierda seguida por el pivote y a continuación 
 partición derecha. 
ANÁLISIS DEL ALGORITMO QUICKSORT. 
El análisis general de la eficiencia de quicksort es difícil. La mejor forma de ilustrar y calcular la complejidad del algoritmo es considerar el número de comparaciones realizadas teniendo en cuenta circunstancias ideales. Supongamos que n (número de elementos de la lista) es una potencia de 2, n = 2k (k = log2 n). Además, supongamos que el pivote es el elemento central de cada lista, de modo que quicksort divide la sublista en dos sublistas aproximadamente iguales. 
En la primera exploración o recorrido hay n − 1 comparaciones. El resultado de la etapa crea dos sublistas aproximadamente de tamaño n/2. En la siguiente fase, el proceso de cada sublista requiere aproximadamente n/2 comparaciones. Las comparaciones totales de esta fase son 2(n/2) = n. 
La siguiente fase procesa cuatro sublistas que requieren un total de 4(n/4) comparaciones, etc. Eventualmente, el proceso de división termina después de k pasadas cuando la sublista resultante tenga tamaño 1. El número total de comparaciones es aproximadamente: 
n + 2(n/2) + 4(n/4) + … + n(n/n) = n + n + … + n
15 
= n · k = n · log2 n 
Para una lista normal la complejidad de quicksort es O(n log2 n). El caso ideal que se ha examinado se realiza realmente cuando la lista (el array) está ordenado en orden ascendente. En este caso el pivote es precisamente el centro de cada sublista. 
Figura 11 
Si el array está en orden ascendente, el primer recorrido encuentra el pivote en el centro de la lista e intercambia cada elemento en las sublistas inferiores y superiores. 
La lista resultante está casi ordenada y el algoritmo tiene la complejidad O(n log2 n). 
El escenario del caso peor de quicksort ocurre cuando el pivote cae consistentemente en una sublista de un elemento y deja el resto de los elementos en la segunda sublista. Esto sucede cuando el pivote es siempre el elemento más pequeño de su sublista. 
En el recorrido inicial, hay n comparaciones y la sublista grande contiene n – 1 elementos. 
En el siguiente recorrido, la sublista mayor requiere n − 1 comparaciones y produce una sublista de n − 2 elementos, etc. El número total de comparaciones es: 
n + n − 1 + n − 2 + …+ 2 = (n − 1)(n + 2)/2 
La complejidad es O(n2). En general el algoritmo de ordenación tiene como complejidad media O(n log2 n) siendo posiblemente el algoritmo más rápido.
16 
MÉTODO DE BINSORT. 
Este método, también llamado clasificación por urnas, persigue conseguir funciones de tiempo de ejecución menores de O(n log n), para ordenar una secuencia de n elementos siempre que se conozca algo acerca del tipo de las claves por las que se están ordenando. 
Supóngase que se tiene un vector v [] de registros, se quiere ordenar respecto um campo clave de tipo entero, además se sabe que los valores de las claves se encuentran en el rango de 1 a n, sin claves duplicadas y siendo n el número de elementos. En estas circunstancias es posible colocar los registros ordenados en um array auxiliar t [] mediante este bucle: 
for 1:= 1 to n do 
t[v[i].clave] = v[i]; 
Sencillamente determina la posición que le corresponde según el valor del campo clave. El bucle lleva un tiempo de ejecución de complejidad O(n). 
Esta ordenación tan sencilla que se ha expuesto es un caso particular del método de ordenación por urnas (binsort). Este método utiliza urnas, cada urna contiene todos los registros con una misma clave. 
El proceso consiste en examinar cada registro r a clasificar y situarle en la urna i, coincidiendo i con el valor del campo clave de r. En la mayoría de los casos en que se utilice el algoritmo, será necesario guardar más de un registro en una misma urna por tener claves repetidas. Entonces estas urnas hay que concatenarlas en el orden de menor índice de urna a mayor, así quedará el array en orden creciente respecto al campo clave. 
ALGORITMO DE ORDENACIÓN BINSORT. 
Se considera que el campo clave de los registros que se van a ordenar son números enteros en el rango 1 .. m. Son necesarias m urnas por lo que es necesario definir
17 
um 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. Así en la urna 1 se sitúan los registros cuyo campo clave sea igual a 1, en la urna 2 los registros cuyo campo clave sea 2, y así sucesivamente en la urna i se sitúan los registros cuyo campo clave sea igual a i. 
Una vez que se hayan distribuido los registros en las diversas urnas es necessário concatenar las listas. 
En la siguiente figura se muestra cómo realizar la concatenación. 
Figura 12 
MÉTODO DE RADIXSORT 
Este método puede considerarse como una generalización de la clasificación por urnas. Aprovecha la estrategia de la forma más antigua de clasificación manual, consistente en hacer diversos montones de fichas, cada uno caracterizado por tener sus componentes un mismo dígito (letra, si es alfabética) en la misma posición; estos montones se recogen en orden ascendente y se reparte de nuevo en montones según el siguiente dígito de la clave. 
Como ejemplo, suponer que se han de ordenar estas fichas identificadas por tres dígitos:
18 
Figura 13 
Atendiendo al dígito de menor peso (unidades) las fichas se distribuyen en montones del 0 al 9; 
Figura 14 
Recogiendo los montones en orden, la secuencia de fichas queda: 
Figura 15 
De esta secuencia podemos decir que está ordenada respecto al dígito de menor peso, respecto a las unidades. Pues bien, ahora de nuevo se distribuye la secuencia de fichas en montones respecto al segundo dígito: 
Figura 16 
Recogiendo de nuevo los montones en orden, la secuencia de fichas queda:
19 
Figura 17 
En este momento esta secuencia de fichas ya están ordenadas respecto a los dos últimos dígitos, es decir, respecto a las decenas. Por último, se distribuye las fichas en montones respecto al tercer dígito: 
Figura 18 
Recogiendo de nuevo los montones en orden, la secuencia de fichas queda ya ordenada: 
194, 216, 236, 247, 345, 365, 389, 425, 431, 467, 529, 572, 672, 721, 746, 834, 836, 
891. 
ALGORITMO DE ORDENACIÓN RADIXSORT 
La idea clave de la ordenación Radixsort (también llamada por residuos) es clasificar por urnas primero respecto al dígito de menor peso (menos significativo) dk, después concatenar las urnas, clasificar de nuevo respecto al siguiente dígito dk −1, y así sucesivamente se sigue con el siguiente dígito hasta alcanzar el dígito más significativo , en ese momento la secuencia estará ordenada. La concatenación de las urnas consiste en enlazar el final de una con el frente de la siguiente. 
Al igual que en el método de Binsort, las urnas se representan mediante un vector de listas. En el caso de que la clave respecto a la que se ordena sea un entero, se tendrán 10 urnas, numeradas de 0 a 9. Si la clave respecto a la que se
20 
ordena es alfabética, habrá tantas urnas como letras distintas, desde la urna que represente a la letra a hasta la z. 
Para el caso de que clave sea entera, en primer lugar se determina el máximo número de dígitos que puede tener la clave. En un bucle de tantas iteraciones como máximo de dígitos se realizan las acciones de distribuir por urnas los registros, concatenar. 
La distribución por urnas exige obtener el dígito del campo clave que se encuentra en la posición definida por el bucle externo, dicho dígito será el índice de la urna.
21 
CONCLUSIÓN 
Un aprendizaje que se obtuvo al realizar esta investigación es que se conoció cada uno de los tipos de métodos de búsqueda ya que al momento de hacer un programa extenso podríamos utilizar algunos de estos métodos y así encontrar la información más rápida y no perder tanto tiempo. 
Al comparar con las demás definiciones y funciones de cada uno de los métodos de búsqueda pude notar que este método es mas eficiente y entendible que los demás. Es algoritmo conocido como quicksort (ordenación rápida) recibe el nombre de su autor, Tony Hoare. 
La idea del algoritmo es simple, se basa en la división em particiones de la lista a ordenar, por lo que se puede considerar que aplica la técnica divide y vencerás. El método es, posiblemente, el más pequeño de código, más rápido, más elegante, más interesante y eficiente de los algoritmos de ordenación conocidos.
22 
OTRAS FUENTES CONSULTADAS 
Métodos de búsqueda. Internet. En línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://es.slideshare.net/jaironitsed/metodos-de-ordenacion- ordenamiento-y-busqueda-algoritmos. 
Métodos de búsqueda. Internet. En línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://programandoconjava.es.tl/Metodos-De-Busqueda-y- Orenacion.html. 
Métodos de búsqueda. Internet. En línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://estructurasdatoscatolica.blogspot.mx/2010/05/metodos-ordenamiento-y- busqueda.html. 
Métodos de búsqueda. Internet. Fuera de línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://www.paginasprodigy.com/edserna/cursos/estddatos/notas/Unidad3.Ordenamientos.pdf 
Métodos de búsqueda. Internet. Fuera de línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://www.aliatuniversidades.com.mx/bibliotecasdigitales/pdf/sistemas/Estructura_de_datos/Estructura_de_datos_Parte_1.pdf.

More Related Content

What's hot

Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoLalo Chooper
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
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
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externaEdwin Narváez
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+neltherdaza
 

What's hot (20)

Recursividad
RecursividadRecursividad
Recursividad
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
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
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externa
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 

Similar to Reporte metodos de busqueda y ordenamiento (20)

Arrays metodos deordenamiento01
Arrays metodos deordenamiento01Arrays metodos deordenamiento01
Arrays metodos deordenamiento01
 
Presentacion
PresentacionPresentacion
Presentacion
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
método de búsqueda Truncamiento
método de búsqueda Truncamientométodo de búsqueda Truncamiento
método de búsqueda Truncamiento
 
metodosdeordenamiento.pptx
metodosdeordenamiento.pptxmetodosdeordenamiento.pptx
metodosdeordenamiento.pptx
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
datos de ordenamiento
datos de ordenamientodatos de ordenamiento
datos de ordenamiento
 
Bus99
Bus99Bus99
Bus99
 
metodo-de-interpolacion-de-newton
metodo-de-interpolacion-de-newtonmetodo-de-interpolacion-de-newton
metodo-de-interpolacion-de-newton
 
Josemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodosJosemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodos
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
 

More from TAtiizz Villalobos (20)

Cuadro sinoptico unidad 1
Cuadro sinoptico unidad 1Cuadro sinoptico unidad 1
Cuadro sinoptico unidad 1
 
Cuadro sinoptico unidad 1
Cuadro sinoptico unidad 1Cuadro sinoptico unidad 1
Cuadro sinoptico unidad 1
 
Proyecto susana final
Proyecto susana finalProyecto susana final
Proyecto susana final
 
Unidad iii pilas y colas
Unidad iii pilas y colasUnidad iii pilas y colas
Unidad iii pilas y colas
 
Estructura de datos benita
Estructura de datos benitaEstructura de datos benita
Estructura de datos benita
 
Apuntes
ApuntesApuntes
Apuntes
 
Recursividad
RecursividadRecursividad
Recursividad
 
Estructura de datos benita
Estructura de datos benitaEstructura de datos benita
Estructura de datos benita
 
Practicas susana todo unidad1
Practicas susana todo unidad1Practicas susana todo unidad1
Practicas susana todo unidad1
 
Tabla comparativa unidad1 benita
Tabla comparativa unidad1 benitaTabla comparativa unidad1 benita
Tabla comparativa unidad1 benita
 
Estructura de datos benita
Estructura de datos benitaEstructura de datos benita
Estructura de datos benita
 
Mapa conceptual unidad 1 benita
Mapa conceptual unidad 1 benitaMapa conceptual unidad 1 benita
Mapa conceptual unidad 1 benita
 
Tabla comparativa unidad1 benita
Tabla comparativa unidad1 benitaTabla comparativa unidad1 benita
Tabla comparativa unidad1 benita
 
Estructura de datos benita
Estructura de datos benitaEstructura de datos benita
Estructura de datos benita
 
Analisis del cap 8
Analisis del cap 8Analisis del cap 8
Analisis del cap 8
 
Practicas unidad 2 evidencias
Practicas unidad 2 evidenciasPracticas unidad 2 evidencias
Practicas unidad 2 evidencias
 
Método rápido (quicksort) (1)
Método rápido (quicksort) (1)Método rápido (quicksort) (1)
Método rápido (quicksort) (1)
 
Practica1unidad4benita
Practica1unidad4benitaPractica1unidad4benita
Practica1unidad4benita
 
Evidencias practica uni 3
Evidencias practica uni 3Evidencias practica uni 3
Evidencias practica uni 3
 
Practicas unidad 3 evidencias
Practicas unidad 3 evidenciasPracticas unidad 3 evidencias
Practicas unidad 3 evidencias
 

Recently uploaded

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Recently uploaded (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Reporte metodos de busqueda y ordenamiento

  • 1. Dirección General de Educación Superior Tecnológica INSTITUTO TECNOLÓGICO DE SALINA CRUZ UNIDAD 1 FACILITADOR: M.C. SUSANA MONICA ROMAN NAJERA TRABAJO: MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO. NOMBRE DE LA ALUMNA: BENITA VILLALOBOS PEREZ N. DE CONTROL: 131020103 SEMESTRE: 3 GRUPO: E2 CARRERA: ING. EN TECNOLOGIAS DE LA INFORMACIÓN Y DE LAS COMUNICACIONES. SALINA CRUZ, OAXACA A DICIEMBRE DE 2014.
  • 2. ÍNDICE INTRODUCCIÓN ........................................................................................................................... 1 MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO .................................................................. 2 MÉTODO BURBUJA..................................................................................................................... 3 MÉTODO DE SELECCIÓN ......................................................................................................... 3 MÉTODO POR INSERCIÓN ....................................................................................................... 4 MÉTODO DE INTERCAMBIO ..................................................................................................... 5 MÉTODO SHELL........................................................................................................................... 6 BÚSQUEDA SECUENCIAL ........................................................................................................ 9 BÚSQUEDA BINARIA ................................................................................................................ 10 ORDENACIÓN RÁPIDA (QUICKSORT) ...................................................................................... 11 ALGORITMO QUICKSORT. ...................................................................................................... 13 MÉTODO DE BINSORT. ............................................................................................................ 16 MÉTODO DE RADIXSORT ....................................................................................................... 17 CONCLUSIÓN ............................................................................................................................. 21 OTRAS FUENTES CONSULTADAS ....................................................................................... 22
  • 3. 1 INTRODUCCIÓN Con mucha frecuencia los programadores trabajan con grandes cantidades de datos almacenados en arrays y registros, y por ello será necesario determinar si un array contiene un valor que coincida con un cierto valor clave. El proceso de encontrar un elemento específico de un arrays se denomina búsqueda. La operación de búsqueda nos permite encontrar datos que están previamente almacenados. La operación puede ser un éxito, si se localiza el elemento buscado o un fracaso en otros casos. La búsqueda se puede realizar sobre un conjunto de datos ordenados, lo cual hace la tarea más fácil y consume menos tiempo; o se puede realizar sobre elementos desordenados, tarea más laboriosa y de mayor insumo de tiempo.
  • 4. 2 MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO BÚSQUEDA Búsqueda Interna será aquella acción que se realice sobre datos que se encuentran en la memoria principal, por ejemplo en un arreglo. Búsqueda Externa es cuando todos sus elementos se encuentran en memoria secundaria (archivos almacenados en dispositivos de cinta, disco, etc.-) La operación de búsqueda de un elemento X en un conjunto consiste en determinar si el elemento X pertenece al conjunto y en este caso dar su posición, o bien, determinar que el elemento X no pertenece al conjunto. Los métodos directos tienen la característica de que su resolución es más corta, de fácil elaboración y comprensión, aunque son ineficientes cuando el número de elementos de un arreglo N, es mediano o considerablemente grande. Los métodos logarítmicos son más complejos con respecto a los directos, pero requieren menos comparaciones y movimientos para ordenar sus elementos, pero su elaboración y compresión resulta más sofisticada y abstracta. Se debe tener en cuenta que la eficiencia entre los distintos métodos se mide por el tiempo de ejecución del algoritmo y este depende fundamentalmente del número de comparaciones y movimientos que se realicen entre sus elementos. Por lo tanto podemos decir que cuando N es pequeño debe utilizarse métodos directos y cuando N es mediana o grande deben emplearse métodos logarítmicos.
  • 5. 3 Métodos Directos o Básicos:  Ordenación por Intercambio Directo (Burbuja)  Ordenación por Selección (Obtención sucesivas de menores)  Ordenación por Inserción (Baraja) Métodos Logarítmicos o Avanzados:  Método de Shell (Inserción con incrementos decrecientes)  Método de QuickSort (Clasificación Rápida)  Método de Binsort (Clasificación por mezcla)  Método de Radixsort MÉTODO BURBUJA El método de la burbuja es uno de los más simples, es tan fácil como comparar todos los elementos de una lista contra todos, si se cumple que uno es mayor o menor a otro, entonces los intercambia de posición. Se denomina burbuja debido a que los valores más pequeños «burbujean» gradualmente (suben) hacia la cima o parte superior del array de modo similar a como suben las burbujas en el agua, mientras que los valores mayores se hunden en la parte inferior del array. MÉTODO DE 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. A diferencia del método de la burbuja, 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. Consideremos un array A con 5 valores enteros 51, 21, 39, 80, 36:
  • 6. 4 Figura 1 Figura 2 MÉTODO POR INSERCIÓN El método de ordenación por inserción es similar al proceso típico de ordenar tarjetas de nombres (cartas de una baraja) por orden alfabético, que consiste en insertar un nombre en su posición correcta dentro de una lista o archivo que ya está ordenado. Así el proceso en el caso de la lista de enteros A = 50, 20, 40, 80, 30.
  • 7. 5 Figura 3 MÉTODO DE INTERCAMBIO Se encarga de ordenar los elementos de una lista en orden ascendente. Este algoritmo se basa en la lectura sucesiva de la lista a ordenar, comparando el elemento inferior de la lista con los restantes y efectuando intercambio de posiciones cuando el orden resultante de la comparación no sea el correcto. Figura 4
  • 8. 6 Figura 5 MÉTODO SHELL El nombre se debe a su inventor, D. L. Shell. Se suele denominar también ordenación por inserción con incrementos decrecientes. Se considera que el método Shell es una mejora de los métodos de inserción directa. Shell modifica los saltos contiguos resultantes de las comparaciones por saltos de mayor tamaño y con ello se consigue que la ordenación sea más rápida. Generalmente se toma como salto inicial n/2 (siendo n el número de elementos), luego se reduce el salto a la mitad en cada repetición hasta que el salto es de tamaño 1. Ejemplo: 74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30 Se debe empezar con k=n/2, siendo n el número de elementos de arreglo, y utilizando siempre la división entera.... después iremos variando k haciéndolo más
  • 9. 7 pequeño mediante sucesivas divisiones por 2, hasta llegar a k=1. Pero vamos a ello... En nuestro ejemplo, n=11 (porque hay 11 elementos). Así que k=n/2=11/2=5. Empezamos con k=5. Así pues, vamos a dividir nuestro arreglo original en 5 sub- arreglo, en los cuales, sus elementos estarán separados por 5 lugares del arreglo original (el salto o gap es 5). Tomamos el primer elemento (el 74) contamos 5 lugares y tomamos también otro elemento (el 97) volvemos a contar 5 y tomamos otro (el 30) y acabamos porque se nos acaba el arreglo. El primer sub-arreglo con k=5 es el formado por 74, 97 y 30. 74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30 Ahora, ordenaremos los elementos del sub-arreglo (rojo) pero sólo entre ellos, utilizando el algoritmo de Inserción directa. 74, 97, 30 30, 14, 21, 44, 38, 74, 11, 78, 65, 88, 97 El 30, un elemento relativamente pequeño se ha ido hacia el principio y el 97 hacia el final. Formemos ahora otro sub-arreglo con salto k=5... Partiendo del segundo elemento (el 14) y contando 5 (tomamos también el 11) y hasta ahí, porque se acaba el arreglo. 30, 1, 21, 44, 38, 74, 11, 78, 65, 88, 97 Vamos a ordenarlos el 11 primero y el 14 después. 30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 Ahora a por otro el 21 y el 78 30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
  • 10. 8 Están en orden entre ellos, así que se quedan como están. Ahora le toca al sub-arreglo formado por el 44 y el 65 30, 11 21, 44, 38, 74, 14, 78, 65, 88, 97 Que también están en orden entre ellos. Y finalmente el 38 y el 88, que también están en orden. 30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 Aún no hemos terminado de ordenarlos. Nuestra k valía 5, así que ahora k←k/2=5/2=2, nuestra nueva k vale 2. Repetimos todo el desarrollo anterior, pero ahora nos saldrán 2 sub-arreglo cuyos elementos están separados por 2 lugares. Tomamos el primer elemento (el 30) contamos 2 lugares y tomamos también otro elemento (el 21) volvemos a contar 2 y tomamos otro (el 38), volvemos a contar y ahora tomamos (el 14), seguimos contado y tomamos (el 65), seguimos contando y tomamos (el 97) y acabamos porque se nos acaba el arreglo. Y posteriormente se forma el según sub-arreglo que empieza con el 11. 30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97 Se ordena (primero los rojos), con el método de inserción: 14, 11, 21, 44, 30, 74, 38, 78, 65, 88, 97 Finalmente ordenamos los negros, pero estos ya están ordenados: 14, 11, 21, 44, 30, 74, 38, 78, 65, 88, 97 Finalmente, calculamos un nuevo k dividiendo el que tenemos entre 2. k←k/2=2/2=1 Hemos llegado a k=1. Cuando k es 1 sólo podemos obtener 1 sub- arreglo cuyos elementos están separados 1 posición: el propio arreglo original.
  • 11. 9 Dicho de otra manera... cuando k es 1, el algoritmo de Shell se comporta exactamente igual que el de inserción directa sobre todo el arreglo. 14, 11, 21, 44, 30, 74, 38, 78, 65, 88, 97 El método de inserción directa se comporta tanto mejor cuanto más cerca está cada elemento de su sitio definitivo. Finalmente, el arreglo queda de ésta manera: 11, 14, 21, 30, 38, 44, 65, 74, 78, 88, 97 Cada elemento descolocado ha tenido que moverse pocos lugares. Muchos de ellos ni siquiera se han movido. BÚSQUEDA SECUENCIAL Busca un elemento de una lista utilizando un valor destino llamado clave. En una búsqueda secuencial (a veces llamada búsqueda lineal), los elementos de una lista o vector se exploran (se examinan) en secuencia, uno después de otro. La búsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona cuyo número de teléfono es 958-220000 en un directorio o listado telefónico de su ciudad. La búsqueda secuencial se utiliza normalmente cuando el array no está ordenado. Comienza en el principio del array y busca hasta que se encuentra el dato buscado y se llega al final de la lista.
  • 12. 10 Figura 6 BÚSQUEDA BINARIA Si la lista está ordenada, la búsqueda binaria proporciona una técnica de búsqueda mejorada. Una búsqueda binaria típica es la búsqueda de una palabra en un diccionario. Dada la palabra, se abre el libro cerca del principio, del centro o del final dependiendo de la primera letra del primer apellido o de la palabra que busca. Se puede tener suerte y acertar con la página correcta; pero, normalmente, no será así y se mueve el lector a la página anterior o posterior del libro. Por ejemplo, si la palabra comienza con «J» y se está en la «L» se mueve uno hacia atrás. El proceso continúa hasta que se encuentra la página buscada o hasta que se descubre que la palabra no está en la lista. Si un array está ordenado, se puede utilizar un algoritmo más eficiente denominado búsqueda binaria. Se tiene un arreglo ordenado de 19 casillas.
  • 13. 11 Figura 7 Si buscamos el número 107. ¿En que posición del arreglo se encuentra? ¿Cuántas comparaciones se hacen? Búsqueda Secuencial Búsqueda Binaria Posición = 16 Posición = 16 Comparaciones = 17 comparaciones = 3 Figura 8 ORDENACIÓN RÁPIDA (QUICKSORT) El algoritmo conocido como quicksort (ordenación rápida) recibe el nombre de su autor, Tony Hoare. La idea del algoritmo es simple, se basa en la división em particiones de la lista a ordenar, por lo que se puede considerar que aplica la técnica divide y vencerás. El método es, posiblemente, el más pequeño de código, más rápido, más elegante, más interesante y eficiente de los algoritmos de ordenación conocidos. El método se basa en dividir los n elementos de la lista a ordenar en dos partes o particiones separadas por un elemento: una partición izquierda, un elemento central denominado pivote o elemento de partición, y una partición derecha. La
  • 14. 12 partición o división se hace de tal forma que todos los elementos de la primera sublista (partición izquierda) son menores que todos los elementos de la segunda sublista (partición derecha). Las dos sublistas se ordenan entonces independentemente. Para dividir la lista en particiones (sublistas) se elige uno de los elementos de la lista y se utiliza como pivote o elemento de partición. Si se elige una lista cualquiera con los elementos en orden aleatorio, se puede seleccionar cualquier elemento de la lista como pivote, por ejemplo, el primer elemento de la lista. Si la lista tiene algún orden parcial conocido, se puede tomar otra decisión para el pivote. Idealmente, el pivote se debe elegir de modo que se divida la lista exactamente por la mitad, de acuerdo al tamaño relativo de las claves. Por ejemplo, si se tiene una lista de enteros de 1 a 10, 5 o 6 serían pivotes ideales, mientras que 1 o 10 serían elecciones «pobres» de pivotes. Una vez que el pivote ha sido elegido, se utiliza para ordenar el resto de la lista en dos sublistas: una tiene todas las claves menores que el pivote y la otra, todos los elementos (claves) mayores que o iguales que el pivote (o al revés). Estas dos listas parciales se ordenan recursivamente utilizando el mismo algoritmo; es decir, se llama sucesivamente al propio algoritmo quicksort. La lista final ordenada se consegue concatenando la primera sublista, el pivote y la segunda lista, en ese orden, en uma única lista. La primera etapa de quicksort es la división o «particionado» recursivo de la lista hasta que todas las sublistas constan de sólo un elemento. Por ejemplo: Se ordena una lista de números enteros aplicando el algoritmo quicksort, como pivote se elige el primer elemento de la lista.
  • 15. 13 Figura 9 ALGORITMO QUICKSORT. La primera etapa en el algoritmo de partición es obtener el elemento pivote; una vez que se ha seleccionado se ha de buscar el sistema para situar en la sublista izquierda todos los elementos menores que el pivote y en la sublista derecha todos los elementos mayores que el pivote. Supongamos que todos los elementos de la
  • 16. 14 lista son distintos, aunque será preciso tener en cuenta los casos en que existan elementos idénticos. Los pasos que sigue el algoritmo quicksort:  Seleccionar el elemento central de a [0: n-1] como pivote.  Dividir los elementos restantes en particiones izquierda y derecha, de modo que ningún elemento de la izquierda tenga una clave (valor) mayor que el pivote y que ningún elemento a la derecha tenga una clave más pequeña que la del pivote.  Ordenar la partición izquierda utilizando quicksort recursivamente.  Ordenar la partición derecha utilizando quicksort recursivamente.  La solución es partición izquierda seguida por el pivote y a continuación  partición derecha. ANÁLISIS DEL ALGORITMO QUICKSORT. El análisis general de la eficiencia de quicksort es difícil. La mejor forma de ilustrar y calcular la complejidad del algoritmo es considerar el número de comparaciones realizadas teniendo en cuenta circunstancias ideales. Supongamos que n (número de elementos de la lista) es una potencia de 2, n = 2k (k = log2 n). Además, supongamos que el pivote es el elemento central de cada lista, de modo que quicksort divide la sublista en dos sublistas aproximadamente iguales. En la primera exploración o recorrido hay n − 1 comparaciones. El resultado de la etapa crea dos sublistas aproximadamente de tamaño n/2. En la siguiente fase, el proceso de cada sublista requiere aproximadamente n/2 comparaciones. Las comparaciones totales de esta fase son 2(n/2) = n. La siguiente fase procesa cuatro sublistas que requieren un total de 4(n/4) comparaciones, etc. Eventualmente, el proceso de división termina después de k pasadas cuando la sublista resultante tenga tamaño 1. El número total de comparaciones es aproximadamente: n + 2(n/2) + 4(n/4) + … + n(n/n) = n + n + … + n
  • 17. 15 = n · k = n · log2 n Para una lista normal la complejidad de quicksort es O(n log2 n). El caso ideal que se ha examinado se realiza realmente cuando la lista (el array) está ordenado en orden ascendente. En este caso el pivote es precisamente el centro de cada sublista. Figura 11 Si el array está en orden ascendente, el primer recorrido encuentra el pivote en el centro de la lista e intercambia cada elemento en las sublistas inferiores y superiores. La lista resultante está casi ordenada y el algoritmo tiene la complejidad O(n log2 n). El escenario del caso peor de quicksort ocurre cuando el pivote cae consistentemente en una sublista de un elemento y deja el resto de los elementos en la segunda sublista. Esto sucede cuando el pivote es siempre el elemento más pequeño de su sublista. En el recorrido inicial, hay n comparaciones y la sublista grande contiene n – 1 elementos. En el siguiente recorrido, la sublista mayor requiere n − 1 comparaciones y produce una sublista de n − 2 elementos, etc. El número total de comparaciones es: n + n − 1 + n − 2 + …+ 2 = (n − 1)(n + 2)/2 La complejidad es O(n2). En general el algoritmo de ordenación tiene como complejidad media O(n log2 n) siendo posiblemente el algoritmo más rápido.
  • 18. 16 MÉTODO DE BINSORT. Este método, también llamado clasificación por urnas, persigue conseguir funciones de tiempo de ejecución menores de O(n log n), para ordenar una secuencia de n elementos siempre que se conozca algo acerca del tipo de las claves por las que se están ordenando. Supóngase que se tiene un vector v [] de registros, se quiere ordenar respecto um campo clave de tipo entero, además se sabe que los valores de las claves se encuentran en el rango de 1 a n, sin claves duplicadas y siendo n el número de elementos. En estas circunstancias es posible colocar los registros ordenados en um array auxiliar t [] mediante este bucle: for 1:= 1 to n do t[v[i].clave] = v[i]; Sencillamente determina la posición que le corresponde según el valor del campo clave. El bucle lleva un tiempo de ejecución de complejidad O(n). Esta ordenación tan sencilla que se ha expuesto es un caso particular del método de ordenación por urnas (binsort). Este método utiliza urnas, cada urna contiene todos los registros con una misma clave. El proceso consiste en examinar cada registro r a clasificar y situarle en la urna i, coincidiendo i con el valor del campo clave de r. En la mayoría de los casos en que se utilice el algoritmo, será necesario guardar más de un registro en una misma urna por tener claves repetidas. Entonces estas urnas hay que concatenarlas en el orden de menor índice de urna a mayor, así quedará el array en orden creciente respecto al campo clave. ALGORITMO DE ORDENACIÓN BINSORT. Se considera que el campo clave de los registros que se van a ordenar son números enteros en el rango 1 .. m. Son necesarias m urnas por lo que es necesario definir
  • 19. 17 um 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. Así en la urna 1 se sitúan los registros cuyo campo clave sea igual a 1, en la urna 2 los registros cuyo campo clave sea 2, y así sucesivamente en la urna i se sitúan los registros cuyo campo clave sea igual a i. Una vez que se hayan distribuido los registros en las diversas urnas es necessário concatenar las listas. En la siguiente figura se muestra cómo realizar la concatenación. Figura 12 MÉTODO DE RADIXSORT Este método puede considerarse como una generalización de la clasificación por urnas. Aprovecha la estrategia de la forma más antigua de clasificación manual, consistente en hacer diversos montones de fichas, cada uno caracterizado por tener sus componentes un mismo dígito (letra, si es alfabética) en la misma posición; estos montones se recogen en orden ascendente y se reparte de nuevo en montones según el siguiente dígito de la clave. Como ejemplo, suponer que se han de ordenar estas fichas identificadas por tres dígitos:
  • 20. 18 Figura 13 Atendiendo al dígito de menor peso (unidades) las fichas se distribuyen en montones del 0 al 9; Figura 14 Recogiendo los montones en orden, la secuencia de fichas queda: Figura 15 De esta secuencia podemos decir que está ordenada respecto al dígito de menor peso, respecto a las unidades. Pues bien, ahora de nuevo se distribuye la secuencia de fichas en montones respecto al segundo dígito: Figura 16 Recogiendo de nuevo los montones en orden, la secuencia de fichas queda:
  • 21. 19 Figura 17 En este momento esta secuencia de fichas ya están ordenadas respecto a los dos últimos dígitos, es decir, respecto a las decenas. Por último, se distribuye las fichas en montones respecto al tercer dígito: Figura 18 Recogiendo de nuevo los montones en orden, la secuencia de fichas queda ya ordenada: 194, 216, 236, 247, 345, 365, 389, 425, 431, 467, 529, 572, 672, 721, 746, 834, 836, 891. ALGORITMO DE ORDENACIÓN RADIXSORT La idea clave de la ordenación Radixsort (también llamada por residuos) es clasificar por urnas primero respecto al dígito de menor peso (menos significativo) dk, después concatenar las urnas, clasificar de nuevo respecto al siguiente dígito dk −1, y así sucesivamente se sigue con el siguiente dígito hasta alcanzar el dígito más significativo , en ese momento la secuencia estará ordenada. La concatenación de las urnas consiste en enlazar el final de una con el frente de la siguiente. Al igual que en el método de Binsort, las urnas se representan mediante un vector de listas. En el caso de que la clave respecto a la que se ordena sea un entero, se tendrán 10 urnas, numeradas de 0 a 9. Si la clave respecto a la que se
  • 22. 20 ordena es alfabética, habrá tantas urnas como letras distintas, desde la urna que represente a la letra a hasta la z. Para el caso de que clave sea entera, en primer lugar se determina el máximo número de dígitos que puede tener la clave. En un bucle de tantas iteraciones como máximo de dígitos se realizan las acciones de distribuir por urnas los registros, concatenar. La distribución por urnas exige obtener el dígito del campo clave que se encuentra en la posición definida por el bucle externo, dicho dígito será el índice de la urna.
  • 23. 21 CONCLUSIÓN Un aprendizaje que se obtuvo al realizar esta investigación es que se conoció cada uno de los tipos de métodos de búsqueda ya que al momento de hacer un programa extenso podríamos utilizar algunos de estos métodos y así encontrar la información más rápida y no perder tanto tiempo. Al comparar con las demás definiciones y funciones de cada uno de los métodos de búsqueda pude notar que este método es mas eficiente y entendible que los demás. Es algoritmo conocido como quicksort (ordenación rápida) recibe el nombre de su autor, Tony Hoare. La idea del algoritmo es simple, se basa en la división em particiones de la lista a ordenar, por lo que se puede considerar que aplica la técnica divide y vencerás. El método es, posiblemente, el más pequeño de código, más rápido, más elegante, más interesante y eficiente de los algoritmos de ordenación conocidos.
  • 24. 22 OTRAS FUENTES CONSULTADAS Métodos de búsqueda. Internet. En línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://es.slideshare.net/jaironitsed/metodos-de-ordenacion- ordenamiento-y-busqueda-algoritmos. Métodos de búsqueda. Internet. En línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://programandoconjava.es.tl/Metodos-De-Busqueda-y- Orenacion.html. Métodos de búsqueda. Internet. En línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://estructurasdatoscatolica.blogspot.mx/2010/05/metodos-ordenamiento-y- busqueda.html. Métodos de búsqueda. Internet. Fuera de línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://www.paginasprodigy.com/edserna/cursos/estddatos/notas/Unidad3.Ordenamientos.pdf Métodos de búsqueda. Internet. Fuera de línea. Página consultada el día 29 de noviembre del 2014. Disponible en: http://www.aliatuniversidades.com.mx/bibliotecasdigitales/pdf/sistemas/Estructura_de_datos/Estructura_de_datos_Parte_1.pdf.