Está en la página 1de 5

Algoritmos Introducción

L a ordenación es una opera-

de ordenación (I)
ción básica en la vida diaria.
El que uno sea más o menos há-
bil realizando pequeñas tareas
cotidianas está directamente re-
lacionado con el que las cosas
implicadas estén más o menos
ordenadas. La razón es obvia: es
Todos sabemos que los ordenadores, entre otras más sencillo buscar algo cuando
los objetos están ordenados.
cosas, sirven para ordenar. Pero ¿Cómo lo hacen?
¿Existen distintos modos de hacerlo? ¿Depende de Quién no ha pensado “Ten-
lo que tengamos que ordenar? ¿Es tan crítico elegir dría que ordenar los discos…” al
correctamente el método de ordenación? buscar un disco de música en la
estantería o, “Nunca recuerdo
si está por su nombre, su apelli-
En este artículo divulgativo se pretende dar do, o por su nombre de pila…”
respuesta a estas y a otras preguntas, mostrando al tratar de encontrar el teléfo-
como funcionan los algoritmos de ordenación más no de un amigo en nuestra
agenda. Encontrar una lata de
importantes y discutiendo las claves a tener en pimientos en la despensa tam-
cuenta para seleccionar el algoritmo más bién puede ser todo un reto. Es
apropiado para un problema concreto. muy fácil recordar otras fuentes
de pequeños problemas organi-
zativos en la vida cotidiana (me-
silla de noche, despacho, caja de
herramientas, botiquín, traste-
ro, etc.)

Por tanto, parece evidente


que las operaciones de ordena-
ción y búsqueda son importan-
tes y están estrechamente rela-
cionadas.

Algo similar ocurre en com-


putación: La ordenación es se-
guramente la operación ele-
Eugenio Francisco Sánchez Úbeda
mental más importante y por
Doctor Ingeniero del ICAI
Instituto de Investigación Tecnológica y Departamento de Sistemas
tanto, mejor estudiada. No en
Informáticos de la Universidad Pontificia Comillas de Madrid, vano utilizamos el término “or-
donde es coordinador del Área de Sistemas Inteligentes (ASI) denador” para referirnos a lo
E-mail: Eugenio.Sanchez@iit.upco.es
que otros llaman “computa-
dor” o “computer”. Además,
se puede afirmar con bastante
seguridad que la gran mayoría
de los datos generados por un

a
28 anales
de mecánica y electricidad
ALGORITMOS DE ORDENACIÓN (I)

programa están ordenados de FIGURA 1. LA ORDENACIÓN ES UNA OPERACIÓN BÁSICA EN LA VIDA DIARIA
alguna manera y que la gran
mayoría de los programas de
un cierto tamaño necesitan re-
alizar en algún momento una
ordenación.

¿Por qué hay distintos


algoritmos?

C asi todos nosotros hemos


aprendido, de forma más o
menos inconsciente y a partir de
la experiencia, varias maneras
distintas de ordenar.

Imaginemos, por ejemplo,


que tenemos que ordenar una debe basar en varios criterios FIGURA 2. EN LOS JUEGOS
mano de cartas en una partida que normalmente son difíciles DE CARTAS SE EMPLEAN DISTINTAS
de mus o de poker. Seguramen- de evaluar con exactitud. ESTRATEGIAS DE ORDENACIÓN
te la estrategia que seguiremos
es muy diferente de la empleada Volvamos al ejemplo del in-
cuando uno tiene que colocar forme desordenado. Es des-
por orden las 200 hojas de un in- pués de recoger las hojas del
forme desordenado que acaba suelo (y comprobar que están
de recoger del suelo. Además, numeradas) cuando uno decide
posiblemente emplearemos una como ordenará el informe.
estrategia distinta si sabemos (o Normalmente dicha decisión
intuimos) que las hojas no están se realiza de forma inconscien-
muy desordenadas. te y tiene en cuenta ciertos
criterios “borrosos” basados en
Si la mayoría de nosotros el número de hojas a ordenar o
empleamos distintas estrategias en cómo de ordenadas estén • El tamaño de dichos objetos
de ordenación, no es de extra- las hojas. No es lo mismo or- (cuanto cuesta moverlos)
ñar que existan algoritmos de denar 10 que 1000 hojas, como • El nivel de desorden que apa-
ordenación distintos. tampoco lo es ordenar algo rece en el conjunto a ordenar
que está totalmente desorde-
nado que algo que está prácti- Cuanto mayores sean nues-
camente ordenado. tros recursos disponibles para
¿Qué algoritmo realizar la ordenación, menos
emplear? La decisión del algoritmo a críticas serán las consideracio-
emplear debe de tener en cuen- nes anteriores. Desde el punto
ta al menos las siguientes consi- de vista informático, el dispo-

E l decidir qué algoritmo de


ordenación es el mejor pa-
ra nuestro problema no es una
deraciones:

• El número de objetos a or-


ner de más memoria principal y
de un procesador más rápido
significa que podremos ordenar
labor sencilla. Dicha decisión se denar más datos, de mayor tamaño y

aanales
de mecánica y electricidad 29
ALGORITMOS DE ORDENACIÓN (I)

en menos tiempo. Sin embargo, FIGURA 3. LA SELECCIÓN DEL ALGORITMO DE ORDENACIÓN


una correcta selección del al- IMPLICA UNA DECISIÓN MULTI-ATRIBUTO
goritmo puede significar un
ahorro de recursos muy impor-
tante, fundamentalmente en el
tiempo necesario para realizar
la ordenación.

Además, existen otras as-


pectos que no deben olvidarse
La decisión de algoritmo a emplear debe de tener en cuenta
y que pueden ser determinan- al menos las siguientes consideraciones:
tes a la hora de elegir el algo- • El número de objetos a ordenar
ritmo. Por ejemplo, si tenemos • El tamaño de dichos objetos (cuánto cuesta moverlos)
ordenados nuestros datos de • El nivel de desorden que aparece en el conjunto a ordenar
clientes según su primer apelli-
do y a continuación queremos
ordenarlos atendiendo a su an- narlos por separado y luego rios días en poner a punto un
tigüedad pero sin perder la an- juntarlo todo? código máquina altamente efi-
terior ordenación (es decir, que ciente que implementa un algo-
para una misma antigüedad los Desde el punto de vista al- ritmo de ordenación ineficiente
clientes sigan ordenados por su gorítmico la razón es la misma, (por ejemplo, cuadrático).
primer apellido), estamos obli- aunque se expresa de una for-
gados a utilizar un algoritmo ma un poco más técnica. Se di- Por otro lado, un estudiante
“estable”. Un algoritmo esta- ce que un algoritmo es “lineal” tiene en casa un PC que realiza
ble nos asegura que los objetos si su tiempo de ejecución es di- 1 millón de operaciones por se-
siempre conservan su posición rectamente proporcional al nú- gundo, es decir 100 veces más
relativa cuando tienen la mis- mero de datos a ordenar. Es de- lento. Decide programar en un
ma clave. cir, tarda el doble en ordenar el rato y utilizando un lenguaje de
doble de datos. Un algoritmo alto nivel un algoritmo muy efi-
“cuadrático” es mucho peor ciente (por ejemplo, lineal).
que uno lineal ya que para orde-
¿Es tan crítica la nar el doble de datos necesita Si el estudiante y la empresa
selección del algoritmo? cuatro veces más tiempo. ordenaran el mismo millón de
datos, el primero tendría que
En cualquier caso, uno po- esperar tan sólo unos pocos se-

L a respuesta es sí, sin duda


alguna. Una razón simple,
pero de peso, la podemos en-
dría pensar que si dispone de
grandes recursos para realizar la
ordenación, (mucha memoria
gundos para obtener el resulta-
do, frente a las varias horas em-
pleadas por el supercomputador
contrar en nosotros mismos: principal y un procesador rápi- de la empresa.
empleamos distintas estrate- do), ¿Por qué preocuparse del
gias de ordenación dependien- algoritmo si todos ordenan co-
do de las características del rrectamente?
problema. Una mala elección Algoritmos
implica un gasto de recursos in- Supongamos que una em-
necesario. ¿Qué ocurre si in- presa dispone de un supercom-
tentamos ordenar un informe putador capaz de realizar 100
de 200 hojas, que está muy de-
sordenado, como si fuera una
millones de operaciones por se-
gundo. Entre los miembros de
L os distintos algoritmos de
ordenación existentes des-
criben de forma precisa como or-
mano de cartas? ¿No es mejor su personal existen muy buenos denar de forma creciente un con-
hacer varios montones, orde- programadores que emplean va- junto de datos.

a
30 anales
de mecánica y electricidad
ALGORITMOS DE ORDENACIÓN (I)

Normalmente los elementos FIGURA 4. ALGORITMOS DE ORDENACIÓN SIMPLES Y SOFISTICADOS


a ordenar están almacenados en
un vector. Dado que un elemen-
to puede estar caracterizado por
diversos atributos o campos, es Fácil
¿Tipo de operación?
Compleja
necesario indicar el que se utili-
zará para ordenar. Dicho campo
se suele denominar “clave”.

Los numerosos algoritmos de


ordenación se pueden clasificar
atendiendo a distintos criterios.
Una clasificación comúnmente
aceptada distingue entre algorit-
mos de ordenación externa e in- Algoritmos Algoritmos
terna. Los primeros se deben Simples Sofisticados
emplear cuando no es posible al- Inserción directa Heapsort
Selección directa Quicksort
macenar todos los datos a orde- Burbuja
nar en un vector dentro de la
memoria principal del ordenador,
siendo necesario emplear duran- ¿Tipo de ordenación?
Pocos datos Muchos datos
te la ordenación un dispositivo
de almacenamiento externo co-
mo una cinta o un disco (de ahí
su nombre). Los algoritmos de
ordenación interna están pensa-
dos para cuando no existe difi- algoritmos simples (también de- cender el ordenador segura-
cultad en el acceso a los datos ya nominados directos) son una mente es demasiado costoso
que se tienen almacenados en buena solución cuando son po- para luego simplemente multi-
memoria RAM como un vector cos los elementos a ordenar. plicar 75 por 342. Sin embargo,
de elementos. En este artículo Cuando tenemos “bastantes” puede compensar arrancar el
nos vamos a centrar en este tipo datos es muy conveniente optar ordenador si tenemos que reali-
de algoritmos por ser los más por un algoritmo sofisticado. zar muchas operaciones.
empleados en la práctica.
Ahora bien, el problema es
Además, existe un criterio saber qué significa “pocos” o
adicional de economía de me- “bastantes” datos. Lamentable- Algoritmos simples
moria RAM (es lo que se deno- mente no existe un umbral claro
mina ordenación in situ). En es- que permita saber cuándo no
te artículo nos limitaremos a compensa emplear un algoritmo
describir algoritmos de este tipo. sofisticado ya que el valor ópti-
Inserción directa
mo dependería del ordenador y
del código máquina que imple-
mente el algoritmo. Un umbral
Simples y sofisticados
razonable puede ser 10 elemen-
tos. Este dilema es similar al
E ste algoritmo es el que em-
pleamos típicamente y de
forma natural para ordenar una
Atendiendo al número de obje- que aparece cuando tenemos mano de cartas. Los elementos
tos a ordenar se puede distin- que realizar una operación nu- (cartas) se dividen conceptual-
guir entre algoritmos “simples” mérica. Si es sencilla lo lógico es mente en dos conjuntos o se-
y algoritmos “sofisticados”. Los emplear una calculadora. En- cuencias, una ordenada (las ca-

a anales
de mecánica y electricidad 31
ALGORITMOS DE ORDENACIÓN (I)

ras que tenemos en la mano) y FIGURA 5. INSERCIÓN DIRECTA


otra desordenada (las cartas que
están boca abajo en la mesa).
Hay dos zonas: una zona desordenada (en azul) y una zona ordenada
Inicialmente todos los datos (en naranja).
están en la secuencia desordena- En cada iteración el algoritmo toma un elemento de la zona desordenada
da. En cada paso se toma un ele- (el siguiente) y lo inserta en el sitio apropiado de la zona ordenada.
mento del conjunto desordenado
(el siguiente) y se inserta en el si- Inserta en la
tio apropiado de la secuencia or-
denada (de ahí el nombre del al-
Selecciona
la última carta 7 posición correcta

goritmo). Como resultado, la zo-


na desordenada va disminuyendo
y la zona ordenada aumentando.
89
2 34
Al final todos los datos estarán Mano
(zona desordenada)
en el conjunto ordenado.

Inserción Directa es muy Cartas ya ordenadas


útil cuando tenemos que orde-
nar pocos datos y sabemos que
están bastante ordenados. Si
no es así, aunque sean pocos
datos, es mejor emplear Selec-
ción Directa. a

(Continuará en el próximo número)

Bibliografía
[1] T.H. Cormen, C.E. Leiseron y R.L.
Rivest, Introduction to Algo-
rithms, The MIT Press, 1994.
[2] C.A.R. Hoare, “Quicksort”, The
Computer Journal, Vol. 5, No. 1,
pp. 10-15, Abril 1962.
[3] J. Jaja, “A perspective on Quick-
sort”, Computing in Science
and Engineering, pp. 43-49,
Enero-Febrero 2000.
[4] D.E. Knuth, El arte de programar
ordenadores. Volumen 3: Orde-
nación y búsqueda, Editorial Re-
A [i]: clave

Inserción Directa(A)
verté, 1986.
1 For i=2 to Tamaño(A)
[5] R. Sedgewick, Algoritmos en carta = A[i]; % selecciona última carta
C++, Editorial Díaz de Santos, j=i-1;
1995. 2 While (j>0 & carta < A[j]) i: Posición en el vector A
A[j+1]=A[j];
[6] M.A. Weiss, Estructuras de datos j=j-1;
en Java, Addison Wesley, 2000. Elementos de la zona ordenada
end 2
[7] N. Wirth, Algoritmos + estructu- A[j+1]=carta; % inserta la carta Elementos de la zona desordenada
end 1
ras de datos = programas, Edi-
ciones del Castillo, 1985.

a
32 anales
de mecánica y electricidad

También podría gustarte