16 dic 2014

Algoritmos clásicos de ordenación en Java

 

Ordenación de vectores mediante algoritmos

Ordenación por intercambio

Ordenación por selección

Ordenación por el método de la burbuja




Ordenación de vectores mediante algoritmos

Ordenación por intercambio

Hace sucesivas pasadas, comprobando valores consecutivos. Si uno no es menor que el otro, se intercambian, con lo que se va ordenando parcialmente.  Se termina cuando en una pasada no se realiza ningún intercambio.

Inter= true;
while  (inter == true) { // mientras haya habido intercambio
            inter= false;
            for (i=0; i <= n-2; i++) {
                        if (t[i] > t[i+1]){
                                   aux= t[i];
                                   t[i] = t[i+1];
                                    t[i+1] = aux;
                                   inter= true;
                                   }
                        }
            }

 

Ordenación por selección

Se busca el mínimo, se intercambia con el primer elemento. Se repite el proceso con el resto de valores desordenados,  ubicando el segundo valor mínimo como el segundo de los ordenados, hasta que no existan valore desordenados.

for (k=0; k <= n-2; k++) { // buscamos el mínimo entre k y n
            indMin = k; //se toma el primero
            for (i=k           +1; i<=n-1; i++) {
                        if (t[i] < t[indMin]){
                                   indMin= i;        //nuevo mínimo
                                   }
            }
            aux = t[indMin];
            t[indMin] = t[k];
            t[k]= aux;
}

 

Ordenación por el método de la burbuja

Se trata de una ordenación por intercambio mejorada, ya que en cada iteración nos queda ordenado el último elemento, con lo que ya no es necesario llegar a ese elemento sino hasta el anterior.


for (i=0; i <= n-2; i++) {
            for (j=0; j <=  n-2 –i ; j++) {
                        if (t[j] > t[j+1]){
                                   aux = t[j];
                                   t[j] = t[j+1];
                                   t[j+1]= aux;
                                   }
            }
}