BruteSort, un algoritmo chungo?
Para este problema clásico ya existen varias soluciones de sobra conocidas como quicksort, mergesort, bubblesort, el caso es que no recordaba ninguno de esos algoritmos y he pensado: a ver si lo saco, si total esto es fácil. He sacado el siguiente programilla para javascript (serÃÂa válido para php,perl,c) y quizá he caido en el absurdo de reinventar la rueda. Ya nos decÃÂan en clase que anidar bucles era un feo asunto (n al cuadrado de pasos), pero en fin.
Básicamente el programa permuta elementos contiguos del array para ordenarlos y vuelve a empezar. En el caso de realizar ninguna permuta, se termina. Lo dicho, fijo que acabo de descubrir el Mediterraneo. Pincha para probarlo.
Para este problema clásico ya existen varias soluciones de sobra conocidas como quicksort, mergesort, bubblesort, el caso es que no recordaba ninguno de esos algoritmos y he pensado: a ver si lo saco, si total esto es fácil. He sacado el siguiente programilla para javascript (serÃÂa válido para php,perl,c) y quizá he caido en el absurdo de reinventar la rueda. Ya nos decÃÂan en clase que anidar bucles era un feo asunto (n al cuadrado de pasos), pero en fin.
Básicamente el programa permuta elementos contiguos del array para ordenarlos y vuelve a empezar. En el caso de realizar ninguna permuta, se termina. Lo dicho, fijo que acabo de descubrir el Mediterraneo. Pincha para probarlo.
/**
* funcion para ordenar un array numérico
* Algo absurdo ya que en Javascript disponemos de la funcion sort()
*/
function ordenar() {
var vector = new Array(7,2,0,-5,7,1,34,2,4,0);
alert("Vamos a ordenar: " + vector.toString());
var ordenado = false;
while (!ordenado) {
// El algoritmo intercambia la posicion de dos elementos
// en caso de desorden y vuelve a empezar
for (i=0; i < vector.length -1; i++)
{
if (vector[i] > vector[i+1]) {
aux = vector[i+1];
vector[i+1] = vector[i];
vector[i] = aux;
break;
}
// Si hemos llegado hasta el final, entonces es que
// hemos terminado
if (i+1 == vector.length-1) {
ordenado = true;
break;
}
}
}
alert("Resultado: " + vector.toString());
}
En fin, aunque funcione, esto tiene pinta de ser muy muy muy poco eficiente.
3 comments |
PELMAlink |
epa pello, esa ordenacion es de lo peor que he visto. ni tu mismo te pones a ordenar cartas con ese algoritmo a mano. iker.
ya no recuerdo si el algo. de la Burbuja es ese mismo pero me parece que si.
en la linea de break; coloca una bandera en la linea anterio al for coloca un do con el nombre de la bandera. inicializa la bandera como verdadera dentro del for antes del if la bandera en falso. y listo cuando salga del bucle sera porque no tubo que cambiar ni una vez :) salu2.