Está en la página 1de 5

ALGORITMOS DE ORDENAMIENTO Y BUSQUEDA

En el mundo de la informática, quizá no haya otras tareas más importantes ni analizadas que la
ordenación y la búsqueda.
Estas rutinas prácticamente se usan en todos los programas de bases de datos, así como en
compiladores, intérpretes y sistemas operativos.
ORDENACION

Es el proceso de colocar un conjunto de datos o elementos similares en un determinado orden


creciente o decreciente.
Clasificación
Los algoritmos de ordenamiento se pueden clasificar de las siguientes maneras:
La más común es clasificar según el lugar donde se realice la ordenación
 Algoritmos de ordenamiento interno: en la memoria del ordenador.
 Algoritmos de ordenamiento externo: en un lugar externo como un disco duro.
Nosotros vamos a trabajar con la primera categoría, que es la de mayor interés para la asignatura.
La principal diferencia entre la primera y segunda categoría es que en la primera, los elementos
siempre están todos disponibles para compararlos, en cambio en la segunda solo se dispone de un
elemento de comparación, por lo demás todos los métodos que se estudien aquí, se pueden
implementar a cualquier tipo de estructura que tengan los datos, sea simple o compleja.

CLASES DE ALGORITMOS DE ORDENACION.

Hay tres métodos generales que se usan para ordenar un arreglo:


a) Por Intercambio
b) Por Selección.
c) Por Inserción.

Hay muchos algoritmos de ordenación para cada uno de los tres métodos, cada algoritmo tiene
sus ventajas y desventajas, pero el criterio para juzgar un algoritmo de ordenación generalmente se
basa en las siguientes preguntas:
-Cual es la rapidez del algoritmo en el caso medio?
-Que rapidez tiene en el mejor y peor caso?
-El algoritmo exhibe un comportamiento natural o no?

a) MÉTODO DE DE ORDENACION POR INTERCAMBIO.


Ordenación por Burbuja: Es la ordenación más conocida (y la menos recomendable), su gran
popularidad se basa en su nombre(fácil de recordar) y su simplicidad.
La Ordenación por el método de la Burbuja utiliza el método de intercambio, hace comparaciones
repetidas y si es necesario intercambios de elementos adyacentes. Su nombre proviene por la similitud
con las burbujas en un tanque de agua, donde a medida que van apareciendo en el tanque, van
buscando su nivel hasta alcanzar la superficie.
Ejemplo. Suponga que tiene un arreglo con los siguientes elementos : 8 5 2 3 1

Use el método de la burbuja para ordenarlo en forma ascendente.(de menor a mayor)

Se inicia la comparación del primero con todos los demás 8 5 3 1 2


Índice=> 0 1 2 3 4
Primera comparación 8 con 5, se cambian quedando así 5 8 3 1 2
Índice=> 0 1 2 3 4
Segunda comparación 5 con 3, se cambian quedando así 3 8 5 1 2
Índice=> 0 1 2 3 4
Tercera comparación 3 con 1, se cambian quedando así 1 8 5 3 2
Índice=> 0 1 2 3 4
Cuarta comparación 1 con 2, No hay cambio quedando así 1 8 5 3 2
Índice=> 0 1 2 3 4
Una vez comparado el primero, se va a comparar el segundo
con todos los restantes elementos
Primera comparación 8 con 5 se cambian quedando así 1 5 8 3 2
Índice=> 0 1 2 3 4
Segunda comparación 5 con 3, se cambian quedando así 1 3 8 5 2
0 1 2 3 4
Tercera comparación 3 con 2, se cambian quedando así 1 2 8 5 3
Índice=> 0 1 2 3 4
Una vez comparado el segundo, se va a comparar el tercero
con todos los restantes elementos
Primera comparación 8 con 5, se cambian quedando así 1 2 5 8 3
Índice=> 0 1 2 3 4
Segunda comparación 5 con 3, se cambian quedando así 1 2 3 8 5
Índice=> 0 1 2 3 4
Una vez comparado el tercero, se comparara el cuarto con
los restantes (solo falta uno)
Primera comparación 8 con 5 se cambian quedando así 1 2 3 5 8
Índice=> 0 1 2 3 4
Finalmente el arreglo esta ordenado

En este método el numero de comparaciones es siempre el mismo, ya que los ciclos se repiten el
número de veces que se indique, aunque la lista ya este ordenada. Esto significa que el método de la
burbuja siempre requiere ½(n²-n) comparaciones, donde n es el número de elementos a comparar

Ejercicio: Implementar un algoritmo (en VBASIC) que permita ordenar un arreglo usando el método de
la burbuja.

Tarea. Consultar que otros algoritmos existen que mejoran el mismo método?

b) MÉTODO DE DE ORDENACION POR SELECCIÓN.(ES UN METODO DE INTERCAMBIO)


Ordenación por selección, selecciona el elemento con el menor valor y lo intercambia con el primer
elemento, después de los restantes elementos , se obtiene de nuevo el menor valor y se lo intercambia
con el segundo y así sucesivamente hasta llegar a los dos últimos elementos.
Algoritmo:
 Buscar el elemento más pequeño de la lista.
 Intercambiarlo con el elemento ubicado en la primera posición de la lista.
 Buscar el segundo elemento más pequeño de la lista.
 Intercambiarlo con el elemento que ocupa la segunda posición en la lista.
 Se repite este proceso hasta que se haya ordenado toda la lista.

Ordenar la siguiente lista: 8-5-2-3-1

Comenzamos buscando el menor elemento de todos. Es el 1. Lo intercambiamos con el 8 y la lista


queda así:

1-5-2-3-8

Ahora buscamos el menor elemento entre la segunda y la última posición. Es el 2. Lo intercambiamos


con el elemento en la segunda posición, es decir el 5. La lista queda así:

1-2-5-3-8

Buscamos el menor elemento entre la tercera posición y la última. Es el 3, que intercambiamos con el
5:

1-2-3-5-8

El menor elemento entre la cuarta y quinta posición es el 5, que no intercambiamos.

1-2-3-5-8

Ya está la lista ordenada.

Desafortunadamente el ciclo externo, como en la ordenación de la burbuja, se ejecuta n-1 veces y el


ciclo interno ½(n) veces, esto significa que este método requiere ½(n²-n) comparaciones, lo que lo
hace muy lento para un gran número de elementos.

Ejercicio: Realizar el programa que permita ordenar una lista mediante el método de selección.

c) MÉTODO DE ORDENACION POR INSERCION.


1.La ordenación por inserción inicialmente ordena los dos primeros miembros del arreglo. Después
el algoritmo inserta el tercer elemento en su posición correcta de acuerdo a los otros dos. A
continuación se inserta el cuarto elemento en la posición correspondiente y proceso continua hasta
que todos los elementos han sido ordenados.

La ordenación por inserción es el último de los algoritmos sencillos de ordenación.


Ejemplo suponiendo que tenemos el siguiente arreglo: 4-3-5-2-1

Inicialmente hay que almacenar (guardar) el segundo elemento (3) que es el que se va a comparar
con el primero.

La variable temp toma el valor del segundo elemento: 3. El primer elemento es el 4. Ahora
comparamos: 3 es menor que 4. Por consiguiente desplazamos el 4 una posición a la derecha y
después

4-4-5-2-1

3-4-5-2-1 copiamos el 3 en su lugar. (Observe que 3 se había guardado en la variable temp


para evitar que se perdiera)

El siguiente elemento es 5. (hay que guardarlo) Comparamos con 4. Es mayor que 4, así que no hay
intercambios.

Continuamos con el 2 (hay que guardarlo). Es menor que cinco: desplazamos el 5 una posición a la
derecha quedando:

3-4-5-5-1
Comparamos (el 2 que está guardado) con 4: es menor, así que desplazamos el 4 una
posición a la derecha:
3-4-4-5-1
Comparamos (el 2 que está guardado) con 3. Desplazamos el 3 una posición a la derecha:
3-3-4-5-1
Finalmente copiamos el 2 en su posición final:
2-3-4-5-1
El último elemento a ordenar es el 1(hay que guardarlo). Que es menor que 5, así que
desplazamos el 5 una posición a la derecha:
2-3-4-5-5
Continuando con el procedimiento la lista va quedando así:
2-3-4-4-5
2-3-3-4-5
2-2-3-4-5
1-2-3-4-5

Hasta que finalmente la lista esta ordenada.

Ejercicio: Realizar el algoritmo que permita ordenar una lista mediante el método de inserción.
2. Ordenamiento Shell: El método se denomina Shell en honor de su inventor Donald Shell. Es una
mejora del método de inserción directa, utilizado cuando el arreglo tiene un gran número de
elementos. Este método no compara a cada elemento con el de su izquierda, como en el de inserción,
sino con el que está a una distancia dada (llamada salto). Este salto es constante, y su valor inicial es
LIM/2 (donde LIM es el número de elementos, y la división es entera). Se van dando pasadas hasta
que en una pasada(La ultima) no se intercambie ningún elemento de sitio. Entonces el salto se reduce
a la mitad, y se vuelven a dar pasadas hasta que no se intercambie ningún elemento, y así
sucesivamente hasta que el salto vale 1.

Por ejemplo, lo pasos para ordenar el arreglo {40,21,4,9,10,35} mediante el método de Shell serían:

Salto=3:

Primera pasada:
{9,21,4,40,10,35} <-- se intercambian el 40 y el 9.
{9,10,4,40,21,35} <-- se intercambian el 21 y el 10.

Salto=1:

Primera pasada:
{9,4,10,40,21,35} <-- se intercambian el 10 y el 4.
{9,4,10,21,40,35} <-- se intercambian el 40 y el 21.
{9,4,10,21,35,40} <-- se intercambian el 35 y el 40.

Segunda pasada:
{4,9,10,21,35,40} <-- se intercambian el 4 y el 9.

Con sólo 6 intercambios se ha ordenado el arreglo, cuando por inserción se necesitaban muchos más.