Está en la página 1de 6

INSTITUTO TECNICO COMERCIAL INCOS EL – ALTO

CARRERA: SISTEMAS INFORMATICOS


ASIGNATURA: PROGRAMACION I

CAPITULO 7
Métodos y Ordenación De Búsqueda En Vectores

CONTENIDO:

7.1 Introducción
7.2 Algoritmos de Ordenación
7.2.1 Ordenamiento Burbuja
7.2.2 Ordenamiento por Selección Directa
7.2.3 Ordenamiento por Inserción Directa
7.3 Métodos de Búsqueda
7.3.1 Búsqueda Secuencial
7.3.2 Búsqueda Binaria

7.1 INTRODUCCIÓN
Los algoritmos de ordenamiento en vectores, como su nombre lo dice, permiten ordenar información de una
manera especial basándonos en un criterio de ordenamiento. En programación, el ordenamiento de datos cumple
un rol muy importante, ya sea como un fin en sí o como parte de otros procedimientos más complejos. Se han
desarrollado muchas técnicas en este ámbito, cada una con características específicas, y con ventajas y desventajas
sobre las demás.

Ordenar es el proceso de ubicar elementos de una lista o colección en algún orden. Por ejemplo, un vector cuyos
elementos son palabras se podría ordenarse alfabéticamente. Un vector cuyos elementos son las cantidades de
habitantes de ciudades podría ordenarse por población, por área o por código postal.

Se han desarrollado y analizado muchísimos algoritmos de ordenamiento. Esto sugiere que el ordenamiento es
una importante área de estudio en programación. Ordenar un gran número de ítems puede requerir una cantidad
considerable de recursos informáticos. Al igual que la búsqueda, la eficiencia de un algoritmo de ordenamiento
está relacionada con el número de ítems que se están procesando. Para las pequeñas colecciones, un método de
ordenamiento complejo puede resultar más problemático que beneficioso. La sobrecarga puede ser demasiado
alta. Por otra parte, para colecciones más grandes, queremos aprovechar tantas mejoras como sean posibles.

7.2 Algoritmos de Ordenación

Antes de considerar algoritmos de ordenación específicos, debemos pensar en las operaciones que se pueden
utilizar para analizar un proceso de ordenamiento. Primero, será necesario comparar dos valores para ver cuál es
más pequeño (o más grande). Para ordenar una colección de elementos, será necesario contar con una manera
sistemática de comparar los valores para ver si no están en orden. El número total de comparaciones será la forma
más común de medir un procedimiento de ordenamiento. En segundo lugar, cuando los valores no están en la
posición correcta con respecto a los otros, puede ser necesario intercambiarlos. Este intercambio es una operación
costosa y el número total de intercambios también será importante para evaluar la eficiencia global del algoritmo.
1
INSTITUTO TECNICO COMERCIAL INCOS EL – ALTO
CARRERA: SISTEMAS INFORMATICOS
ASIGNATURA: PROGRAMACION I

7.2.1 Ordenamiento Burbuja


El ordenamiento burbuja hace múltiples recorridos o pasadas a lo largo de un vector. Compara los elementos
adyacentes e intercambia los que no están en orden. Cada recorrido o pasada a lo largo de un vector ubica el
siguiente valor más grande en su lugar apropiado. En esencia, cada elemento “burbujea” (o sube) hasta el lugar
al que pertenece.
La siguiente figura muestra el primer recorrido de un ordenamiento burbuja. Los elementos sombreados se
comparan para ver si no están en orden. Si hay n elementos en el vector, entonces hay (n−1) parejas de elementos
que deben compararse en el primer recorrido. Es importante tener en cuenta que, una vez que el valor más grande
del vector es parte de una pareja, éste avanzará continuamente hasta que el recorrido se complete.

PRIMER RECORRIDO O PASADA EN EL VECTOR

HAY INTERCAMBIO

NO HAY INTERCAMBIO

HAY INTERCAMBIO

HAY INTERCAMBIO

HAY INTERCAMBIO

HAY INTERCAMBIO

HAY INTERCAMBIO

HAY INTERCAMBIO

ELEMENTO 93 EN EL LUGAR
CORRECTO, LUEGO DEL
PRIMER RECORRIDO O
PASADA EN EL VECTOR

Al comienzo del segundo recorrido o segunda pasada, el valor más grande ya está en su lugar. Quedan n−1 ítems
por ordenar, lo que significa que habrá n−2 parejas. Puesto que cada recorrido o pasada ubica al siguiente valor

2
INSTITUTO TECNICO COMERCIAL INCOS EL – ALTO
CARRERA: SISTEMAS INFORMATICOS
ASIGNATURA: PROGRAMACION I

mayor en su lugar, el número total de pasadas necesarias será n−1. Después de completar la pasada n−1, el ítem
más pequeño debe estar en la posición correcta sin requerir procesamiento adicional.

7.2.2 Ordenamiento Por Selección Directa

El ordenamiento por selección mejora el ordenamiento burbuja haciendo un sólo intercambio por cada recorrido
o pasada a través del vector. Para hacer esto, un ordenamiento por selección busca el valor mayor a medida que
hace un recorrido o una pasada y, después de completar el recorrido o pasada, lo pone en la ubicación correcta.
Al igual que con un ordenamiento burbuja, después del primer recorrido o pasada, el elemento mayor está en la
ubicación correcta. Después del segundo recorrido o pasada, el siguiente mayor está en su ubicación. Este proceso
continúa y requiere n−1 recorridos o pasadas para ordenar los n elementos, ya que el elemento final debe estar en
su lugar después de la (n−1)-ésima pasada.

La siguiente figura muestra todo el proceso de ordenamiento. En cada paso, el ítem o elemento mayor restante se
selecciona y luego se pone en su ubicación correcta. El primer recorrido o pasada ubica el elemento 93, el segundo
recorrido o pasada ubica el elemento 77, el tercer recorrido o pasada ubica el 55, y así sucesivamente.

93 es el mayor, se lo selecciona y se lo lleva a su lugar

77 es el mayor, se lo selecciona y se lo lleva a su lugar

55 es el mayor, se lo selecciona y se lo lleva a su lugar

54 es el mayor, se lo selecciona y se lo lleva a su lugar

44 es el mayor, pero ya está en su lugar

31 es el mayor, se lo selecciona y se lo lleva a su lugar

26 es el mayor, se lo selecciona y se lo lleva a su lugar

20 es el mayor, se lo selecciona y se lo lleva a su lugar

17 es el menor de todos, ya está en su lugar, por tanto


el vector está7.2.3
ordenado
3
INSTITUTO TECNICO COMERCIAL INCOS EL – ALTO
CARRERA: SISTEMAS INFORMATICOS
ASIGNATURA: PROGRAMACION I

Se debe notar que el ordenamiento por selección hace el mismo número de comparaciones que el ordenamiento burbuja.
Sin embargo, debido a la reducción en el número de intercambios, el ordenamiento por selección normalmente se ejecuta
más rápidamente en pruebas de referencia. De hecho, para los elementos del vector mostrado, el ordenamiento burbuja hace
20 intercambios, mientras que el ordenamiento por selección hace sólo 8.

7.2.4 Ordenamiento Por Inserción Directa

El ordenamiento por inserción, aunque sigue siendo de n-1 recorridos, funciona de una manera ligeramente
diferente. Siempre mantiene un subvector con los elementos ordenados en las posiciones inferiores del mismo
vector. Cada elemento nuevo se “inserta” de vuelta en el subvector ordenado. La siguiente figura muestra el
proceso de ordenamiento por inserción. Los elementos sombreados representan el subvector ordenado a medida
que el algoritmo lleva a cabo cada recorrido o pasada.

Se asume que 54 está en un subvector ordenado de un elemento

Se inserta 26 en el subvector ordenado a la izquierda de 54

Se inserta 93 en el subvector ordenado a la derecha de 54

Se inserta 17 en el subvector ordenado

Se inserta 77 en el subvector ordenado

Se inserta 31 en el subvector ordenado

Se inserta 44 en el subvector ordenado

Se inserta 55 en el subvector ordenado

Se inserta 20 en el subvector ordenado

Se inicia asumiendo que un subvector con un elemento (posición [0]) ya está ordenado. En cada recorrido o
pasada, uno para cada elemento, desde 1 hasta n−1, el elemento actual se comparara contra los del subvector ya
ordenado. A medida que revisamos en el subvector ya ordenado, desplazamos a la derecha los elementos que sean
mayores. Cuando llegamos a un elemento menor o al final del subvector, se puede insertar el elemento actual.

4
INSTITUTO TECNICO COMERCIAL INCOS EL – ALTO
CARRERA: SISTEMAS INFORMATICOS
ASIGNATURA: PROGRAMACION I

La figura de abajo muestra los detalles de la quinta pasada o recorrido. En este punto del algoritmo, se tiene un
subvector ordenado de cinco elementos que consta de los números 17, 26, 54, 77 y 93. Queremos insertar el 31
de vuelta en los elementos ya ordenados. La primera comparación con 93 hace que 93 se desplace hacia la derecha.
El 77 y el 54 también se desplazan. Cuando se encuentra el elemento 26, el proceso de desplazamiento se detiene
y el 31 se ubica en la posición disponible. Ahora tenemos un subvector ordenado de seis elementos.

Se necesita insertar 31 de vuelta en el subvector ordenado

93>31, entonces debe desplazarse a la derecha en el subvector ordenado

77>31, entonces debe desplazarse a la derecha en el subvector ordenado

54>31, entonces debe desplazarse a la derecha en el subvector ordenado

26<31, entonces insertar 31 en esta posición del subvector ordenado

7.3 Métodos De Búsqueda

La búsqueda es el proceso algorítmico de encontrar un elemento particular en una colección de elementos en un


vector. Una búsqueda normalmente devuelve True o False según el elemento esté o no presente, respectivamente.
En ocasiones, el algoritmo se puede modificar para devolver la posición donde se encuentre el elemento.

7.3.1 Búsqueda Secuencial


Cuando los elementos se almacenan en una colección, por ejemplo en un vector, se dice que tienen una relación
lineal o secuencial. Cada elemento se almacena en una posición relativa a los demás. Estas posiciones relativas
son los valores de los subíndices de las casillas donde se almacenan los elementos individuales. Dado que estos
valores de los subíndices están ordenados, es posible visitarlos en secuencia. Este proceso da lugar a una primera
técnica de búsqueda, la búsqueda secuencial.

La siguiente figura muestra cómo funciona esta búsqueda. Comenzando en el primer elemento de la lista,
simplemente recorremos el vector de un elemento a otro, siguiendo el orden secuencial subyacente hasta que
encontremos lo que buscamos o nos quedemos sin elementos. Si nos quedamos sin elementos, hemos descubierto
que el elemento que estábamos buscando no estaba presente.
5
INSTITUTO TECNICO COMERCIAL INCOS EL – ALTO
CARRERA: SISTEMAS INFORMATICOS
ASIGNATURA: PROGRAMACION I

Si buscamos el elemento 65, entonces debemos recorrer el vector


secuencialmente hasta encontrarlo

7.3.2 Búsqueda Binaria


En la búsqueda secuencial, cuando comparamos con el primer elemento, hay a lo sumo n−1 elementos restantes
para verificar si el primer elemento no es el valor que estamos buscando. En lugar de buscar secuencialmente en
el vector, una búsqueda binaria comenzará examinando el elemento central. Si ese elemento es el que estamos
buscando, hemos terminado. Si no es el elemento correcto, podemos utilizar la naturaleza ordenada de la lista de
los elementos del vector para eliminar la mitad de los elementos restantes. Si el elemento que buscamos es mayor
que el elemento central, sabemos que toda la mitad inferior del vector, así como el elemento central, se pueden
ignorar de la consideración posterior. El elemento, si es que está en la lista del vector, debe estar en la mitad
superior.

Podemos entonces repetir el proceso con la mitad superior. Comenzar en el elemento central y compararlo con el
valor que estamos buscando. Una vez más, o lo encontramos o dividimos la lista del vector por la mitad,
eliminando por tanto otra gran parte de nuestro espacio de búsqueda posible. La siguiente figura muestra cómo
este algoritmo puede encontrar rápidamente el valor 54.

LA MITAD INFERIOR

LA MITAD SUPERIOR

Si buscamos el elemento 54, entonces se lo buscará en la mitad superior del


vector ordenado, y luego en la mitad inferior de ese subvector también ordenado

Se debe observar que este algoritmo es un gran ejemplo de una estrategia de “Divide y Vencerás”. Dividir y conquistar
significa que dividimos el problema en partes más pequeñas, resolvemos dichas partes más pequeñas de alguna manera y
luego reensamblamos todo el problema para obtener el resultado. Cuando realizamos una búsqueda binaria en un vector,
primero verificamos el elemento central. Si el elemento que estamos buscando es menor que el elemento central, podemos
simplemente realizar una búsqueda binaria en la mitad izquierda de la lista original. Del mismo modo, si el elemento es
mayor, podemos realizar una búsqueda binaria en la mitad derecha. De cualquier manera, ésta es una llamada recursiva a la
función de búsqueda binaria pasándole una lista más pequeña.

También podría gustarte