User avatar by pello in January 1, 1970, 1:00 am
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.
/**
* 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 |  3997 reads
0 of 0
make a comment
Comments
#1  user avatar Cloaked Anonymous says:
de lo peor
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.
+-0 of 0
in January 1, 1970, 1:02 am
#2  user avatar Cloaked Anonymous says:
no es el algoritmo de la burbija?
ya no recuerdo si el algo. de la Burbuja es ese mismo pero me parece que si.
+-0 of 0
in January 1, 1970, 1:02 am
#3  user avatar Cloaked Anonymous says:
corrigelo y te queda!
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.
+-0 of 0
in January 1, 1970, 1:02 am





Read and insert this