Vous êtes sur la page 1sur 19

O  



|  
 

á
    
i Dado un arreglo de enteros á y su longitud á,
ordenar el arreglo de menor a mayor

Métodos de ordenamiento:
i elección

i Inserción

i Burbuja

i Quicksort
À    
Oste algoritmo es sencillo. Consiste en lo siguiente:
i Buscas el elemento más pequeño de la lista.
i Lo intercambias con el elemento ubicado en la
primera posición de la lista.
i Buscas el segundo elemento más pequeño de la
lista.
i Lo intercambias con el elemento que ocupa la
segunda posición en la lista.
i Repites este proceso hasta que hayas ordenado
toda la lista.
O     
Lista a ordenar 4-3-5-2-
intercambiamos con el 4 y la lista queda así:
-3-5--4
Lo intercambiamos con el elemento en la segunda
posición, es decir el 3. La lista queda así:
1--5--4
intercambiamos con el 5:
1-2--5-
intercambiamos con el 5:
1-2-3-4-5
á
      

ror (i=0; i<TAM - 1; i++)


pos_menor = Menor (A, TAM, i);
temp = A[i];
A[i] = A [pos_menor];
A [pos_menor] = temp;
À     
Consideremos que en un momento dado, el segmento
izquierdo del arreglo está ordenado y el segmento
derecho no.
Podemos tomar un elemento del segmento derecho e
›  en su lugar correcto en el lado izquierdo

X   X  


i e considera la lista partida en dos sublistas,
una ordenada y la otra para ordenar
i On el primer paso, la lista ordenada contiene un
elemento y la lista por ordenar, TAM-1,
i e van extrayendo uno a uno los elementos de
la lista desordenada y se colocan en la sublista
ordenada, mediante comparaciones sucesivas,
hasta encontrar la posición correcta,
i Ol proceso continúa hasta que la lista
desordenada queda vacía.
O      
Ë 12 4 9 3
Ë 12 4 9 3
4 Ë 12 9 3
4 Ë 9 12 3
3 4 Ë 9 12
À      

i upongamos que tenemos una runción rlota()


que ³rlota´ el elemento más grande hasta el rinal
del arreglo.
i Ojemplo: int a[] = {Ë, 12, 4, 9, 3 };

rlota(a);

a Ë 4 9 3 12
À      
i UCómo podemos ordenar todo el arreglo usando
la runción r?
Ë
  
Ë   

Ë  

 Ë 

 Ë 

À      
    
 

i Podemos ahorrar ciclos si limitamos el límite de


rlotación
    
 ! 
O    
± dado un arreglo y un índice ›, colocar en la posición ›
el elemento más grande que exista entre a[0] y a[i]
rlota: arreglo, indice->void
±
void rlota(int a[], int i)
{
...
}
ß 
Ë
  

Ë
  

Ë 


Ë 

Ë 

ß 
"  #   $%!  
& 
    '  
$ %$ %
 $ %! $ %
(
J 
"  #   )!  *
& 
  )
)  *
*  
(
À      

#    $%!  


&  
    
 ! 
(
#   $%!  
"  #    $%!  
&  ! 
    
    '  
$ %$ %
 $ %! $ %
(
¦+  

i Inventado por C. A. R. Hoare


i e escoje un elemento del arreglo como pivote
i e particiona el arreglo en dos subarreglos: uno
contiene aquellos elementos menores que el
pivote, el otro contiene los mayores
i      
 .
i e obtiene el arreglo ordenado uniendo de
nuevo los subconjuntos ordenados y el pivote.
^

i |rdenamiento de burbuja
i http:±±olli.inrormatik.uni-oldenburg.de±rpsort±Animation.html
i |rdenamiento por eleción
i http:±±ciips.ee.uwa.edu.au±morris±ear2±PLD210±sorting.html
i |rdenamiento por Quick ort
i http:±±olli.inrormatik.uni-
oldenburg.de±rpsort±QuickAnimation.html
i http:±±ciips.ee.uwa.edu.au±morris±ear2±PLD210±ava±q
_sort±tqs_new.html
i http:±±c.conclase.net±orden±quicksort.html
i Oxplicación paso a paso del ordenamiento Quick ort
i http:±±www.cse.iitk.ac.in±users±dsrkg±cs210±applets±sorting
II±quickort±quickort.html
i Direrentes ejemplos
i http:±±www.cse.iitk.ac.in±users±dsrkg±cs210±html±sortingpa
ge.html
ë 
  
      
   

     
      
        

           

         


 

            

           

   
 
    


Vous aimerez peut-être aussi