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

Algoritmos sobre arrays

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