Vous êtes sur la page 1sur 7

Algoritmo de ordenamiento

En computacin y matemticas un algoritmo de ordenamiento es un algoritmo que


pone elementos de una lista o un vector en una secuencia dada por una relacin de
orden, es decir, el resultado de salida ha de ser una permutacin o reordenamiento
de la entrada que satisfaga la relacin de orden dada. Las relaciones de orden ms
usadas son el orden numrico y el orden lexicogrfico. Ordenamientos eficientes son
importantes para optimiar el uso de otros algoritmos !como los de "#squeda y fusin$
que requieren listas ordenadas para una e%ecucin rpida. &am"in es #til para poner
datos en forma cannica y para generar resultados legi"les por humanos.
Clasificacin
Los algoritmos de ordenamiento se pueden clasificar de las siguientes maneras'
La ms com#n es clasificar seg#n el lugar donde se realice la ordenacin
o (lgoritmos de ordenamiento interno' en la memoria del ordenador.
o (lgoritmos de ordenamiento externo' en un lugar externo como un disco
duro.
)or el tiempo que tardan en realiar la ordenacin, dadas entradas ya ordenadas
o inversamente ordenadas'
o (lgoritmos de ordenacin natural' &arda lo m*nimo posi"le cuando la
entrada est ordenada.
o (lgoritmos de ordenacin no natural' &arda lo m*nimo posi"le cuando la
entrada est inversamente ordenada.
)or esta"ilidad' un ordenamiento esta"le mantiene el orden relativo que ten*an
originalmente los elementos con claves iguales. )or e%emplo, si una lista
ordenada por fecha se reordena en orden alfa"tico con un algoritmo esta"le,
todos los elementos cuya clave alfa"tica sea la misma quedarn en orden de
fecha. Otro caso ser*a cuando no interesan las may#sculas y min#sculas, pero se
quiere que si una clave a+, esta"a antes que (",, en el resultado am"as claves
aparecan %untas y en el orden original' a+,, (",. ,uando los elementos son
indistingui"les !porque cada elemento se ordena por la clave completa$ la
esta"ilidad no interesa. Los algoritmos de ordenamiento que no son esta"les se
pueden implementar para que s* lo sean. -na manera de hacer esto es modificar
artificialmente la clave de ordenamiento de modo que la posicin original en la
lista participe del ordenamiento en caso de coincidencia.
Los algoritmos se distinguen por las siguientes caracter*sticas'
,omple%idad computacional !peor caso, caso promedio y me%or caso$ en
trminos de n, el tama.o de la lista o arreglo. )ara esto se usa el concepto de
orden de una funcin y se usa la notacin O!n$. El me%or comportamiento para
ordenar !si no se aprovecha la estructura de las claves$ es O!n log n$. Los
algoritmos ms simples son cuadrticos, es decir O!n/$. Los algoritmos que
aprovechan la estructura de las claves de ordenamiento !p. e%. bucket sort$
pueden ordenar en O!kn$ donde k es el tama.o del espacio de claves. ,omo
dicho tama.o es conocido a priori, se puede decir que estos algoritmos tienen un
desempe.o lineal, es decir O!n$.
-so de memoria y otros recursos computacionales. &am"in se usa la notacin
O!n$.
Ordenamiento de burbuja
El Ordenamiento de Burbuja !Bubble Sort en ingls$ es un sencillo algoritmo de
ordenamiento. 0unciona revisando cada elemento de la lista que va a ser ordenada con
el siguiente, intercam"indolos de posicin si estn en el orden equivocado. Es
necesario revisar varias veces toda la lista hasta que no se necesiten ms intercam"ios,
lo cual significa que la lista est ordenada. Este algoritmo o"tiene su nom"re de la
forma con la que su"en por la lista los elementos durante los intercam"ios, como si
fueran peque.as 1"ur"u%as1. &am"in es conocido como el mtodo del intercambio
directo.
2ado que solo usa comparaciones para operar elementos, se lo considera un algoritmo
de comparacin, siendo el ms sencillo de implementar.
-na manera simple de expresar el ordenamiento de "ur"u%a en pseudocdigo es la
siguiente'
Algoritmo Ordenamiento de "ur"u%a
Procedimiento
Haga lo siguiente:
Para hasta haga lo siguiente:
Si entonces:
Repita mientras
La instruccin significa que se de"e intercam"iar el valor de
con el de . El algor*tmo tam"in puede ser expresado de manera equivalente
como sigue'
Algoritmo Ordenamiento de "ur"u%a
Procedimiento
Para hasta haga lo siguiente:
Para hasta haga lo siguiente:
Si entonces:
3otar que'
4e supone que los vectores que se estn ordenando empiean en la posicin cero
!5$ y terminan en la posicin n 6 7.
El ordenamiento se hace de menor a mayor, si se quisiera hacer al revs "astar*a
con cam"iar el sentido de la comparacin en las sentencias si de cada algoritmo,
es decir, donde pone 898 poner 8:8.
Quicksort
El ordenamiento rpido !uicksort en ingls$ es un algoritmo "asado en la tcnica de
divide y vencers, que permite, en promedio, ordenar n elementos en un tiempo
proporcional a n log n. Esta es la tcnica de ordenamiento ms rpida conocida. 0ue
desarrollada por ,. (ntony ;. <oare en 7=>5. El algoritmo original es recursivo, pero
se utilian versiones iterativas para me%orar su rendimiento !los algoritmos recursivos
son en general ms lentos que los iterativos, y consumen ms recursos$.
Descripcin del algoritmo
El algoritmo fundamental es el siguiente'
Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pi!ote.
;esituar los dems elementos de la lista a cada lado del pivote, de manera que a
un lado queden todos los menores que l, y al otro los mayores. En este
momento, el pivote ocupa exactamente el lugar que le corresponder en la lista
ordenada.
La lista queda separada en dos su"listas, una formada por los elementos a la
iquierda del pivote, y otra por los elementos a su derecha.
;epetir este proceso de forma recursiva para cada su"lista mientras stas
contengan ms de un elemento. -na ve terminado este proceso todos los
elementos estarn ordenados.
,omo se puede suponer, la eficiencia del algoritmo depende de la posicin en la que
termine el pivote elegido.
En el me%or caso, el pivote termina en el centro de la lista, dividindola en dos
su"listas de igual tama.o. En este caso, el orden de comple%idad del algoritmo es
O"n#log n$.
En el peor caso, el pivote termina en un extremo de la lista. El orden de
comple%idad del algoritmo es entonces de O"n%$. El peor caso depender de la
implementacin del algoritmo, aunque ha"itualmente ocurre en listas que se
encuentran ordenadas, o casi ordenadas.
En el caso promedio, el orden es O"n#log n$.
3o es extra.o, pues, que la mayor*a de optimiaciones que se aplican al algoritmo se
centren en la eleccin del pi!ote.
?nsertado Ordenado'
4i el vector no esta ordenado tienes que ordenarlo con este procedimiento'
procedure quic@sort!var a' vectorA inf,sup ' integer$A
var piv,tmp,i,% ' integerA
"egin
if inf :B sup then
"egin
piv 'B aCsupDA i 'B inf E 7A % 'B supA
repeat
repeat i 'B i F 7 until aCiD 9B pivA
repeat % 'B % E 7 until aC%D :B pivA
tmp 'B aCiDA aCiD 'B aC%DA aC%D 'B tmp
until % :B iA
aC%D 'B aCiDA aCiD 'B aCsupDA aCsupD 'B tmpA
quic@sort!a,inf,i E 7$A
quic@sort!a,i F 7,sup$
end
endA
para insertar luego el elemento tienes que "iscar su posicin teniendo en cuenta que no
este repetido y como esta ordenado el vector si de forma ascendente o descendente'
i'B7
enc'BfalseA
Ghile !i:BnHelementosHdeHv$ do or not enc
"egin
if vectorCiDBelemento then "egin
Grite!8El elemento ya existe en el vector8$A
enc'BtrueA
endA
else if vectorCiD9elemento then "egin
pos'BiA
enc'BtrueA
end
else i'BiF7A
endA
?nsertado 2esordenado'
?nicio
Leer' 3
;epita
Escri"a I7' Leer JectorK
Escri"a IL' ?mprimir JectorK
Escri"a IM' ?nsertar 2esordenadoK
Escri"a IEsco%a su opcinK
,asos de Opcin'
,aso 7' LeerHJec !3, ($
,aso L' ?mprimirHJec !3, ($
,aso M' Lea Jin7
?nsertarH2esordenado !3,( Jin7$
0inH,asos
0in
2ise.o Estructurado de (lgoritmos
?nvestigacin'
(lgoritmos de Ordenamiento
)rofesora'
Ntra. Eri@a Olivos ,.
(lumno'
?s"al (ltamirano Ome.
Orupo'
75M

Vous aimerez peut-être aussi