Pseint – Ordenar arreglo ascendentemente o descendentemente

Hola a todos, hoy os voy a explicar como podemos ordenar arreglo con Pseint.

En Pseint, cuando tratamos con arreglos, en ciertas ocasiones, necesitaremos ordenarlo de una manera concreta para nuestro algoritmo.

Si no sabes lo que son los arreglos, te dejo un tutorial donde explicamos que son:

Arreglos o arrays en pseudocódigo

Vamos a hacer un ejemplo paso a paso, para comprender como ordenar un arreglo.

Rellenar un arreglo

Lo primero, es tener nuestro arreglo relleno de datos que ordenar.

Para eso ya tenemos un tutorial sobre como hacerlo:

Rellenar un arreglo con números aleatorios en PseInt

De forma resumida, tenemos que crear un arreglo de x posiciones y recorremos con un bucle de 0 a x-1 creando un numero aleatorio con la función azar.


Proceso OrdenarArreglo
    
	// Definicion de variables
	definir arreglo, numeroElementos, i como numero;
	
	// inicializacion de variables
	dimension arreglo[10];
	numeroElementos <- 10;
	
	// Crear arreglo con valores aleatorios
	Escribir "Original: ";
	Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer
		arreglo[i] <- azar(100);
		Escribir arreglo[i], " " Sin Saltar;
	FinPara
	Escribir "";
	
	
FinProceso

Elegir el modo de ordenamiento para ordenar arreglo

También, añadiremos que el usuario pueda elegir el modo de ordenamiento del arreglo.

Definiremos una variable llamada ordenamiento donde almacenaremos el modo de ordenamiento.

Después, pediremos al usuario que elija dos opciones (ASC/DESC):

  • ASC (Ascendente): ordenaremos los números de menor a mayor.
  • DESC (Descendente): ordenaremos los números de mayor a menor.

Ten en cuenta, que debemos controlar si el usuario escribe uno u otro.

Proceso OrdenarArreglo
    
	// Definicion de variables
	definir arreglo, numeroElementos, i como numero;
	definir ordenamiento como cadena;
	
	// inicializacion de variables
	dimension arreglo[10];
	numeroElementos <- 10;
	
	// Crear arreglo con valores aleatorios
	Escribir "Original: ";
	Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer
		arreglo[i] <- azar(100);
		Escribir arreglo[i], " " Sin Saltar;
	FinPara
	Escribir "";
	
	// Modo de ordenamiento
	Escribir "El modo de ordenamiento a usar (ASC/DESC)";
	leer ordenamiento;
	ordenamiento <- Mayusculas(ordenamiento);
	
	// Si no es ASC o DESC, mostramos un error
	Si ordenamiento <> "ASC" Y ordenamiento <> "DESC" Entonces
		Escribir "El ordenamiento no es correcto";
	SiNo
		
	FinSi
	
FinProceso

Ordenar arreglo

A continuación, ya vamos con la parte de ordenar el arreglo, los pasos que vamos a realizar son los siguientes:

  • Recorremos el arreglo de 0 a x-1, siendo x su longitud.
  • Obtenemos la posición actual, guardándola en una nueva variable llamada pos.
  • Buscamos en el mismo arreglo, empezando en la siguiente posición, el elemento a intercambiar con la posición actual, esto dependerá del modo de ordenamiento.
  • Si encontramos un valor mayor o menor de la posición actual (según el modo de ordenamiento), lo guardamos su posición en la variable pos.
  • Intercambiamos los valores de la posición actual con la encontrada.
  • Mostramos el arreglo

Todo esto, se traduce de la siguiente forma:

Proceso OrdenarArreglo
    
	// Definicion de variables
	definir arreglo, numeroElementos, i,j, pos, aux como numero;
	definir ordenamiento como cadena;
	
	// inicializacion de variables
	dimension arreglo[10];
	numeroElementos <- 10;
	
	// Crear arreglo con valores aleatorios
	Escribir "Original: ";
	Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer
		arreglo[i] <- azar(100);
		Escribir arreglo[i], " " Sin Saltar;
	FinPara
	Escribir "";
	
	// Modo de ordenamiento
	Escribir "El modo de ordenamiento a usar (ASC/DESC)";
	leer ordenamiento;
	ordenamiento <- Mayusculas(ordenamiento);
	
	// Si no es ASC o DESC, mostramos un error
	Si ordenamiento <> "ASC" Y ordenamiento <> "DESC" Entonces
		Escribir "El ordenamiento no es correcto";
	SiNo
		
		// Recorremos los elementos
		Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer
			// Guardamos el valor de i en pos
			pos <- i;
			// Recorremos desde la siguiente posicion
			// Buscamos el elemento menor (ASC) o mayor (DESC) para intercambiarlo
			Para j<-i+1 Hasta numeroElementos - 1 Con Paso 1 Hacer
				Si (ordenamiento = "ASC" Y arreglo[j] < arreglo[pos]) o (ordenamiento = "DESC" Y arreglo[j] > arreglo[pos])  Entonces
					pos <- j;
				FinSi
			FinPara
			
			// Intercambiamos la variable
			aux <- arreglo[i];
			arreglo[i] <- arreglo[pos];
			arreglo[pos] <- aux;
			
		FinPara
		
		// Mostramos el resultado
		escribir "Resultado:";
		Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer
			Escribir arreglo[i], " " Sin Saltar;
		FinPara
		
	FinSi
	
FinProceso

Resultado final

Por fin, ejecutamos nuestro programa de 3 formas:

  • Eligiendo ASC.

ordenar arreglo 1

  • Eligiendo DESC.

ordenar arreglo 2

  • Escribiendo cualquier cosa que no sea ASC o DESC.

ordenar arreglo 3

Aquí tienes el repositorio github donde ver el código.

Te dejo un video para que lo veas todo el proceso.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *