Planteamiento del Problema
¿Qué tengo?
Un vector de 5 números
¿Qué quiero?
Ordenar el vector de forma ascendente
¿Cómo lo hago?
- Tenemos 5 elementos, de los cuales iremos ordenando posición a posición (empezando por la posición 0)
- Una posición está ordenada cuando todos los elementos de las posiciones posteriores son mayores que el elemento de la posición que se está ordenando.
<imagen de posición i ordenada>
- Si ordenamos posición a posición, vemos que si ordenamos de la posición 0 a la 3, la cuarta quedará ordenada automáticamente (no hay posiciones posteriores con la cual compararla)
Siguiendo estas pautas, haremos el procedimiento para el vector de 5 elementos, razonando a cámara lenta:
(ver enlace)
(ver enlace)
Ahora que hemos visto poco a poco cómo sería la ejecución del algoritmo, planteamos el pseudocódigo para el vector de 5 elementos:
/***Método de Ordenamiento General***/
iPos = 0; //representa cada posición del vector
Para cada elemento del Vector hasta la posición 3
OrdenarDesde(iPos); //Ordena el vector a partir de la posición iPos
Fin Para
/***Método OrdenarDesde***/
iPosCompara = iPos + 1; //esta variable es la que recorre las posiciones posteriores a iPos para comparar
elemento1 = Vector[iPos];
Mientras (iPosCompara <= 4)
elemento2 = Vector[iPosCompara];
//Se comparan: elemento1 y elemento2
Si elemento1<= elemento2 //no tiene que cambiar de posición
iPosCompara++
Caso Contrario
Intercambia(iPos, iPosCompara) //intercambia los elementos
iPosCompara = iPos + 1; //vuelve a empezar el ordenamiento desde la posición iPos
elemento1 = Vector[iPos];
Fin Si
Fin Mientras
/***Método Intercambia***/
aux = Vector[iPos]; //guarda temporalmente el valor de la posición iPos
Vector[iPos] = Vector[iPosCompara];
Vector[iPosCompara] = aux; //utiliza el valor guardado en aux para el intercambio
Para terminar, os dejo el mismo código como un proyecto de consola en c# generalizado para vectores de N elementos.
- Programa Principal
- Clase con Algortimo de Ordenamiento
- Programa Principal
- Clase con Algortimo de Ordenamiento