Uso de la función Sort en C++

La función sort la puedes encontrar en la librería estándar de C++ (STL) para hacer una orden de comparación. Vamos a ver, por qué usar la funcion sort es una opción muy interesante.

¿Por qué utilizar Sort?

Imaginemos que tenemos un contenedor vector y unos datos dentro del mismo.

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    getchar();
    return = 0;
}

De esta forma, tener que iterar dentro del vector para que los datos estén ordenados de cualquier forma, es un poco pesado de hacer.

Una vez que C++ incluyó Sort, nos permite hacer lo siguiente para acceder a los datos del vector y ordenarlos de menor a mayor.

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end());

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Si quisiéramos ordenarlos de mayor a menor, podríamos utilizar la función que está en functional, de esta forma:

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>


int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end(), std::greater<int>());

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

En este caso se le está pasando una función de comparación para que devuelva el mayor, si lo ejecutamos nos imprime los datos ordenados de mayor a menor.

Para que nos los muestre ordenados al revés, es decir, de menor a mayor, lo haríamos de la siguiente forma:

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end());

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Compilamos y ejecutamos el código anterior, y vemos como imprime los valores al revés, de menor a mayor.

Además podemos crear una función de comparación para que devuelva el mayor, que haremos según se indica en la documentación oficial. Esta función nos va a devolver un booleano, que tenga dos parámetros del tipo correspondiente.

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

bool comp (const int& a, const int& b)
{
    return  a > b;
}

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end(), &comp);

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Ejecutamos el código y nos devuelve los datos ordenados de mayor a menor.

También podemos hacer lo siguiente:

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

bool comp (const int& a, const int& b)
{
    if (a == 1)
        return false; 
    if (b ==1)
        return true;

    return  a < b;
}

int main()
{
    std::vector<int> our_vector{3, 5, 4, 1, 2};

    std::sort(our_vector.begin(), our_vector.end(), &comp);

    for (auto& elem : our_vector)
        std::cout << elem << “ – “ << std::endl;

    getchar();
    return = 0;
}

Al ejecutarlo nos muestra el valor menor al final.

Como hemos visto, Sort sirve para hacer ordenaciones, aunque haya diferentes contenedores, como set o map, que también permiten ordenación.

En los casos en los que tenemos un contenedor secuencial y queremos ordenarlo, incluso aunque que no sea un contenedor de C++, ya que podemos hacerlo nosotros, colocando el inicio y el final y haciendo la función de comparación, algo que es muy útil y esta es la funcionalidad básica de Sort.

Sigue aprendiendo a diseñar y asimilar patrones e interfaces para tus programas con este Curso de Patrones de diseño e interfaces en C++.

curso-cpp-interfaces

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

También te puede interesar...

Lenguajes de Programación

Cómo usar la librería Chrono en C++

29 Octubre 2018 Antonio José Checa Bustos
Lenguajes de Programación

Cómo usar Thread Pool en C++

03 Octubre 2018 Daniel Sánchez Quirós
Patrones e interfaces en c++

Curso de Patrones de diseño e interfaces en C++

1 hora y 41 minutos · curso

  • Backend

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información.