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

Uso de la función Sort en C++

Antonio José Checa Bustos
  • Escrito por Antonio José Checa Bustos el 30 de Octubre de 2018
  • 1 min de lectura | Programación
Uso de la función Sort en C++
El reproductor de video será cargado en breves instantes.

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.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Cómo depurar código c++ con Visual Studio

Cómo depurar código c++ con Visual Studio

Programación

04 de Septiembre de 2018

Visual Studio es una de las opciones (y la más usada) que tienes para programar C++ en Windows, te contamos como depurar el código que desarrolles en este IDE para que veas como funciona tu código.

Cómo usar Thread Pool en C++

Cómo usar Thread Pool en C++

Programación

03 de Octubre de 2018

Aprende a crear tus propios thread pool en C++, primero de forma teórica y después con un caso práctico.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars