Está en la página 1de 4

Métodos de ordenación y búsqueda

La búsqueda es una operación diseñada para localizar elementos en una


estructura de datos (matriz). A menudo, los programadores trabajan con grandes
cantidades de datos almacenados en matrices y es posible que necesiten determinar si la
matriz contiene un valor que coincide con algún a clave o valor de búsqueda. (Delgado,
2013)

Búsqueda secuencial

Una búsqueda secuencial consiste en recorrer secuencialmente la matriz desde el


primer elemento hasta el último elemento y verificar si algún elemento de la matriz
contiene el vector buscado, es decir, comparar cada elemento de la matriz con el valor
buscado. Dado que las matrices no tienen ningún orden especifico, existe la misma
posibilidad de encontrar el valor en el primer elemento o en el último. Entonces, en
promedio, el programa tiene que comparar el valor de búsqueda con la mitad de los
elementos de la matriz. La búsqueda secuencial requiere recorrer todo el vector y
realizar múltiples comparaciones iguales al tamaño del vector en el peor de los casos,
cuando el elemento que se busca es el último o no se encuentra, de los cual podemos
derivar: un vector con muchos elementos, como la búsqueda puede resultar
inconveniente.

Los métodos de búsqueda lineales (secuenciales) son adecuados para matrices


pequeñas o matrices desordenadas; si la matriz está ordenada, puede utilizar técnicas de
búsqueda binaria de alta velocidad. (Delgado, 2013)

Búsqueda binaria

Una búsqueda binaria de un valor en un vector implica analizar primero el


elemento central del vector, utilizando la misma técnica para buscar en la parte inferior
del vector si el elemento si el elemento buscado es más pequeño y en la parte superior si
no lo es. Es decir, después de cada comparación, elimina la mitad de los elementos de la
matriz de búsqueda. En la segunda interacción, la parte a buscar es la mitad del vector
(derecha o izquierda), y el elemento a evaluar es el elemento central de esta nueva
parte. Esto supone claramente que el vector debe haber sido ordenado previamente.
La búsqueda binaria requiere menos interacciones y comparaciones que la
búsqueda secuencial, pero el vector debe ordenarse de antemano para así poder realizar
la búsqueda. (Delgado, 2013)

La diferencia entre la búsqueda binaria y la búsqueda secuencial es el tiempo de


ejecución. Para determinar cuál de los dos métodos es más rápido, es decir, cual
encuentra primero el elemento en el peor de los casos, se debe establecer una unidad de
medida “teórica” y, según las instrucciones se puede establecer un algoritmo de
comparación entre dos. Para hacer esto, la complejidad temporal o el costo de un
programa se mide por el número de interacciones de ejecución del ciclo del programa.
Si ocurren multiples bucles independientes en un programa, la complejidad temporal
será la suma de sus interacciones.

Métodos de ordenación

Esta es una función que organiza las entradas de una tabla en algún orden
secuencial según un criterio de clasificación. La clasificación se realiza según el valor
de uno de los campos del registro. El objetivo principal de la clasificación es facilitar la
búsqueda de miembro de un conjunto ordenado. Ordenar un grupo de datos significa
mover los datos o sus referencias para que estén en un orden que puede ser numérico,
alfabético o incluso alfanumérico, ascendente o descendente.

Método de burbuja

El método de burbuja, que en ingles se le conoce como Bubble, es un algoritmo


de clasificación muy simple que funciona verificando cada elemento de la lista
ordenable y lo cambia a otra posición, de esa manera por lo que el mayor o el menor
según sea el orden va subiendo.

La idea básica detrás del método de burbuja es recorrer un conjunto de


elementos de manera secuencial varias veces. Cada paso compara un elemento del
conjunto con su sucesor(x[i] con x[i+i]), e intercambia los dos elementos si no están
en el orden adecuado. El algoritmo utiliza una bandera que cambia cuando se realiza
algún intercambio de valores, y permanece intacta cuando no se intercambia ningún
valor, pudiendo así detener el ciclo y terminar el proceso de ordenamiento cuando no se
realice intercambios, lo que indica que este ya está ordenado.

Este algoritmo es fácil de entender y programar, pero no es muy eficiente


porque cada paso tiene n˗1 pasos y n˗i comprobaciones, aunque es mejor que el
algoritmo de clasificación por intercambio. En el peor de los casos, cuando los
elementos están en orden inverso, el número máximo de pasadas es n-1, y el número de
intercambio o comparaciones viene dado por (n-1) * (n-1) = n² -2n +1. En el mejor de
los casos, cuando los elementos están en orden, el número de ejecuciones es al menos 1
y el periodo de referencia es n-1. (Hernández, 2017)

Método por inserción

La ordenación por inserción o insertSort en ingles comienza con un elemento,


asume que la lista esta ordenada, toma k+1 elementos, los compara con todos los
elementos ya que están ordenados y encuentra el elemento más pequeño.

El algoritmo de clasificación por inserción directa es relativamente simple que


funciona bien en muchas situaciones. Completa tres de los algoritmos de clasificación
más básicos y de complejidad cuadrática, así como SelectionSort y BubbleSort.

Esto se basa en intentar crear una lista ordenada dentro de una matriz que se está
ordenando. De estos tres algoritmos, este es el que mejores resultados da a efectos
prácticos, ofrece una cantidad bastante equilibrada de comparaciones comerciales y
tiene varias características que lo hacen destacar sobre los otros dos en la mayoría de las
situaciones.

Este algoritmo se basa en realizar una comparación. Dos cosas esenciales para
que la clasificación funcione, uno es una matriz o estructura similar de elementos
comparables y el otro es un criterio de comparación definido. Esto nos dice si los dos
elementos dados están en orden o en el número para cada interacción. Los elementos
del 0 al i del bucle exterior son una lista ordenada. (Hernández, 2017)
Método Shell

El método Shell es una variación mejorada del método de inserción directa. Este
método también se denomina inserción de pasos incrementales, en el método de
clasificación por inserción directa, cada elemento se compara con el elemento de su
izquierda para denominar su posición correcta en la matriz. Si el elemento que se está
insertando es más pequeño que el grupo de elementos a su izquierda, se necesitar
realizar algunas comparaciones antes de colocar el elemento.

Shell sugiere realizar comparaciones entre elementos en pasos más grandes y en


menos incrementos para ordenar los elementos de una matriz más rápidamente. la
ordenación Shell es una generalización de la ordenación por inserción con dos
observaciones en mente:

1. La ordenación por inserción es eficiente cuando la entrada esta “casi


ordenada”.
2. Los tipos de inserción son generalmente ineficientes porque solo mueven
valores una posición a la vez.

El algoritmo de clasificación de Shell mejora la clasificación por inserción al


comparar elementos en múltiples posiciones separados por espacios. Esto permite que
el elemento dé “pasos más grandes” hacia su posición esperada, se realizan múltiples
pasadas sobre los datos con espacios cada vez más pequeños. El ultimo paso en la
ordenación de Shell es una ordenación por inserción simple, pero para entonces
garantiza que la mayoría de los datos vectoriales estén ordenados. (Hernández, 2017)

También podría gustarte