Ordenamiento por selección en arreglos dinámicos en C++

C++Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a realizar el ordenamiento por selección para ordenar una matriz dinámica no ordenada en C++ utilizando el algoritmo de ordenamiento por selección.

Crea un nuevo archivo de C++

Primero, crea un nuevo archivo de C++ llamado main.cpp en el directorio ~/project.

touch ~/project/main.cpp

Implementa el algoritmo de ordenamiento por selección

El algoritmo de ordenamiento por selección funciona seleccionando el elemento mínimo y colocándolo al principio del arreglo, luego seleccionando el siguiente elemento mínimo del resto del arreglo y colocándolo en el índice 1, y así sucesivamente hasta que el arreglo esté completamente ordenado. Aquí está cómo implementar el algoritmo de ordenamiento por selección en C++:

#include <iostream>
using namespace std;

// función para intercambiar la posición de dos elementos
void swap(int *a, int *b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}

// función para realizar el algoritmo de ordenamiento por selección
void selectionSort(int array[], int size) {
  for (int step = 0; step < size - 1; step++) {
    int min_idx = step;
    for (int i = step + 1; i < size; i++) {

      // Para ordenar en orden descendente, cambie > a < en esta línea.
      // Seleccione el elemento mínimo en cada ciclo.
      if (array[i] < array[min_idx])
        min_idx = i;
    }

    // coloque el mínimo en la posición correcta
    swap(&array[min_idx], &array[step]);
  }
}

En este bloque de código, definimos una función swap() para intercambiar la posición de dos elementos en el arreglo, y una función selectionSort() para realizar el algoritmo de ordenamiento por selección en el arreglo.

Ingresa el arreglo

En este paso, ingresarás el arreglo dinámico que necesita ser ordenado. Puedes hacer esto pidiendo al usuario que ingrese los elementos del arreglo uno por uno:

// código principal
int main() {
  int size;
  cout<<"Ingrese el tamaño del arreglo: ";
  cin>>size; //ingresa el tamaño del arreglo
  int* data = new int[size]; //Declara dinámicamente el arreglo

  // Ingresa los elementos del arreglo uno por uno
  for(int i = 0; i < size; i++) {
    cout<<"Ingrese el elemento "<<i+1<<" : ";
    cin>>data[i];
  }

Realizar el ordenamiento por selección

Ahora que tenemos el arreglo no ordenado, podemos aplicar el algoritmo de ordenamiento por selección sobre él utilizando la función selectionSort() que definimos anteriormente. Aquí está cómo hacerlo:

  // Realiza el ordenamiento por selección
  selectionSort(data, size);

Salida del arreglo ordenado

Finalmente, mostraremos el arreglo ordenado en la consola utilizando un bucle en una función llamada printArray(). Aquí está cómo hacerlo:

  // Muestra el arreglo ordenado
  cout << "\nArreglo ordenado: ";
  for (int i = 0; i < size; i++)
    cout << data[i] << " ";

  // Libera la memoria utilizada por el arreglo dinámico
  delete[] data;
  return 0;
}

Compila y ejecuta el código

Para compilar y ejecutar el código, abre la terminal y navega hasta la carpeta donde se encuentra almacenado tu archivo main.cpp. Luego ejecuta los siguientes comandos:

g++ main.cpp -o main
./main

El arreglo ordenado debería mostrarse en la consola.

Resumen

En este laboratorio, has aprendido cómo utilizar el algoritmo de ordenamiento por selección para ordenar un arreglo dinámico no ordenado en C++. Para hacer eso, tuviste que ingresar el arreglo, implementar el algoritmo de ordenamiento por selección, realizar la ordenación, mostrar el arreglo ordenado y luego compilar y ejecutar el código en la terminal. Con estas habilidades, podrás ordenar arreglos de cualquier tamaño utilizando el ordenamiento por selección.