Ordenamiento burbuja bidireccional o CocktailSort

El ordenamiento de burbuja bidireccional (cocktail sort en inglés) es un algoritmo de ordenamiento que surge como una mejora del algoritmo ordenamiento de burbuja.

La manera de trabajar de este algoritmo es ir ordenando al mismo tiempo por los dos extremos del vector. De manera que tras la primera iteración, tanto el menor como el mayor elemento estarán en sus posiciones finales. De esta manera se reduce el número de comparaciones aunque la blod del algoritmo sigue siendo O(n²).

Fuente Wikipedia ^^^^^^

A continuación se muestra el código del algoritmo:

Desde mi punto de vista personal prefiero el sencillo ordenamiento burbuja.

/*
* CocktailSort.java
*
* Created on 5 de marzo de 2008, 09:38 PM
*/
/**
*
* @author p3ll3
*/

public class CocktailSort {

//variables para ordenamiento
public static int izquierda,derecha,ultimo;
// predefino arreglo
public static int arreglo[] = {10,23,6,4,223,2,112,3,6,34};

public static void main(String[] args) {
izquierda = 1;
derecha = arreglo.length;
ultimo = arreglo.length-1;

do{
for(int i = arreglo.length-1;i > 0;i--){

//Burbuja hacia la izquierda
//Los valores menores van a la izquierda
if(arreglo[i-1] > arreglo[i]){
int aux = arreglo[i]; // variable auxiliar para poder hacer
//intercambio de
arreglo[i] = arreglo[i-1]; // posicion
arreglo[i-1] = aux;
ultimo = i;

}
}
izquierda = ultimo+1;
for(int j=1;j <= arreglo.length-1;j++){

if(arreglo[j-1] > arreglo[j]){
int aux = arreglo[j];
arreglo[j] = arreglo[j-1];
arreglo[j-1] = aux;
ultimo = j;
}

}
derecha = ultimo-1;

}while(derecha >= izquierda);

for(int i=0;i <= arreglo.length-1;i++){
System.out.println(arreglo[i]);
}
}
}

Espero que les sirva , ahi me cuentan...

0 comentarios: