Algoritmos sobre arrays
-
Upload
jefferson-sarmiento -
Category
Documents
-
view
9.936 -
download
0
Transcript of Algoritmos sobre arrays
Capitulo III: Capitulo III: Algoritmos sobre arraysAlgoritmos sobre arrays
Algoritmos de búsquedaAlgoritmos de búsqueda
Los dos algoritmos más importantes son: la Los dos algoritmos más importantes son: la
búsqueda secuencial y la búsqueda binaria.búsqueda secuencial y la búsqueda binaria.
La búsqueda secuencial puede realizarse en La búsqueda secuencial puede realizarse en
cualquier tipo de arrays (no necesita que estén cualquier tipo de arrays (no necesita que estén
ordenados), y es muy sencilla, pero es un método ordenados), y es muy sencilla, pero es un método
poco eficiente. La búsqueda binaria sólo puede poco eficiente. La búsqueda binaria sólo puede
utilizarse sobre arrays ordenados, y es algo más utilizarse sobre arrays ordenados, y es algo más
complicada, pero es altamente eficiente.complicada, pero es altamente eficiente.
Búsqueda secuencialBúsqueda secuencial
Consiste en ir comparando cada elemento Consiste en ir comparando cada elemento del array con el elemento a buscar, del array con el elemento a buscar, comenzando por el principio. Finalizara la comenzando por el principio. Finalizara la búsqueda cuando se localice el elemento o búsqueda cuando se localice el elemento o cuando se llegue al final del array. Si se cuando se llegue al final del array. Si se encuentra el elemento, se devolverá como encuentra el elemento, se devolverá como resultado su posición; si no, se devolverá un resultado su posición; si no, se devolverá un código de error que indique que el elemento no se código de error que indique que el elemento no se encuentra en el array. encuentra en el array.
Búsqueda binariaBúsqueda binaria
El algoritmo consiste en examinar primero el El algoritmo consiste en examinar primero el elemento que ocupa el centro de la lista, si es el elemento que ocupa el centro de la lista, si es el que se busca ya se ha logrado la solución y si no, que se busca ya se ha logrado la solución y si no, se determina si el elemento buscado está en la se determina si el elemento buscado está en la primera mitad (porque es inferior al elemento primera mitad (porque es inferior al elemento central), en cuyo caso se descarta la segunda mitad, o si central), en cuyo caso se descarta la segunda mitad, o si está en la segunda mitad (porque es superior), está en la segunda mitad (porque es superior), descartando la primera mitad. Se repite el proceso con la descartando la primera mitad. Se repite el proceso con la sublista correspondiente hasta que se encuentre el sublista correspondiente hasta que se encuentre el elemento o bien hasta que se determine que no está elemento o bien hasta que se determine que no está porque se ha llegado a una sublista de 0 elementos.porque se ha llegado a una sublista de 0 elementos.
Algoritmos de inserciónAlgoritmos de inserción
Estos métodos consisten en añadir un Estos métodos consisten en añadir un
nuevo elemento al array. Siempre debe nuevo elemento al array. Siempre debe
verificarse que hay espacio disponible para verificarse que hay espacio disponible para
el nuevo elemento. Si el array no esta el nuevo elemento. Si el array no esta
ordenado, habrá que especificar la posición ordenado, habrá que especificar la posición
donde se quiere insertar el nuevo elemento. donde se quiere insertar el nuevo elemento.
Si está ordenado, el propio algoritmo determinará Si está ordenado, el propio algoritmo determinará
la posición que le corresponde al nuevo elemento.la posición que le corresponde al nuevo elemento.
Inserción en un array no ordenadoInserción en un array no ordenado
Es necesario indicar la posición que debe Es necesario indicar la posición que debe
ocupar el nuevo elemento. Para insertar un ocupar el nuevo elemento. Para insertar un
elemento en una determinada posición de elemento en una determinada posición de
un array, deberá abrirse un hueco en dicha un array, deberá abrirse un hueco en dicha
posición, moviendo los elementos posición, moviendo los elementos
posteriores un lugar, empezando por el posteriores un lugar, empezando por el
ultimo.ultimo.
Inserción de un elemento en un Inserción de un elemento en un array ordenadoarray ordenado
No hay que indicar ninguna posición, sino que ocupará la No hay que indicar ninguna posición, sino que ocupará la posición que le corresponda según su valor. Pueden posición que le corresponda según su valor. Pueden contemplarse dos situaciones.contemplarse dos situaciones.Los elementos no pueden encontrarse repetidos en la lista. Si Los elementos no pueden encontrarse repetidos en la lista. Si el elemento que se desea insertar ya existe se lanza un el elemento que se desea insertar ya existe se lanza un mensaje indicando que no se puede insertar el elemento, mensaje indicando que no se puede insertar el elemento, caso contrario se averigua la posición que la corresponde y caso contrario se averigua la posición que la corresponde y se inserta en está.se inserta en está.Los elementos pueden repetirse. En este caso, nos da igual Los elementos pueden repetirse. En este caso, nos da igual que el elemento a insertar se encuentre ya en el arrayque el elemento a insertar se encuentre ya en el array
Algoritmos de ordenaciónAlgoritmos de ordenación
Existen los métodos directos y los Existen los métodos directos y los Avanzados.Avanzados.Entre los directos hay el burbuja, inserción Entre los directos hay el burbuja, inserción directa y selección directa.directa y selección directa.Entre los avanzados están el QuickSort y el Entre los avanzados están el QuickSort y el HeapSort.HeapSort.
BurbujaBurbuja
La característica principal de este método La característica principal de este método
es el intercambio de pares de elementos es el intercambio de pares de elementos
adyacentes. Consiste básicamente en hacer adyacentes. Consiste básicamente en hacer
varias pasadas sobre el array comparando varias pasadas sobre el array comparando
en cada una de ellas todos los elementos en cada una de ellas todos los elementos
adyacentes de forma que si no están adyacentes de forma que si no están
ordenados se intercambian.ordenados se intercambian.
Método de inserción directaMétodo de inserción directa
Este método consiste en insertar cada Este método consiste en insertar cada
elemento, comenzando por el segundo y elemento, comenzando por el segundo y
hasta el final, en el lugar que le corresponde hasta el final, en el lugar que le corresponde
en la secuencia ordenada que se va en la secuencia ordenada que se va
formando a su izquierda.formando a su izquierda.
Método de selección directa Método de selección directa
Este método selecciona de la lista completa el Este método selecciona de la lista completa el elemento con menor valor y se intercambia con el elemento con menor valor y se intercambia con el primero, con lo que el primer elemento queda primero, con lo que el primer elemento queda definitivamente ordenado. A continuación, se definitivamente ordenado. A continuación, se busca el elemento de menor valor de la sublista busca el elemento de menor valor de la sublista comprendida entre el segundo y el último, y se comprendida entre el segundo y el último, y se intercambia con el segundo elemento, y así intercambia con el segundo elemento, y así sucesivamente hasta que sólo quede un elemento, sucesivamente hasta que sólo quede un elemento, que quedará definitivamente ordenado en el último que quedará definitivamente ordenado en el último lugar.lugar.
Método de ordenación rápida Método de ordenación rápida (QuickSort)(QuickSort)
Consiste en particionar el array de forma que los Consiste en particionar el array de forma que los valores de la parte izquierda sean todos menores valores de la parte izquierda sean todos menores o iguales que un determinado elemento del array o iguales que un determinado elemento del array llamado pivote, y los de la parte derecha, mayores llamado pivote, y los de la parte derecha, mayores o iguales que el pivote. Una vez hecho esto, se o iguales que el pivote. Una vez hecho esto, se particionan del mismo modo las partes izquierda y particionan del mismo modo las partes izquierda y derecha, haciendo lo mismo con las partes derecha, haciendo lo mismo con las partes resultantes , y así sucesivamente hasta que todas resultantes , y así sucesivamente hasta que todas las partes consten de un elemento, momento en el las partes consten de un elemento, momento en el cual se habrá conseguido ordenar el array. cual se habrá conseguido ordenar el array.
Método del montículo (HeapSort)Método del montículo (HeapSort)
Este método es una variante del método de ordenación Este método es una variante del método de ordenación por selección, donde la búsqueda del elemento mínimo de por selección, donde la búsqueda del elemento mínimo de un array se realiza mediante técnicas basadas en la un array se realiza mediante técnicas basadas en la construcción de un montículo o heap.construcción de un montículo o heap.Un montículo es un árbol binario que Un montículo es un árbol binario que cumple ciertas condiciones. Consideremos cumple ciertas condiciones. Consideremos dos tipos de montículos:dos tipos de montículos:Montículo ascendente (también llamado Montículo ascendente (también llamado main heap): en ellos se cumple que cada main heap): en ellos se cumple que cada nodo es menor o igual que sus hijos.nodo es menor o igual que sus hijos.Montículo descendente (o max heap): se cumple Montículo descendente (o max heap): se cumple que cada nodo es mayor o igual que sus hijos.que cada nodo es mayor o igual que sus hijos.