Clasificación de vectores 2D en C++ | Conjunto 2 (En orden descendente por fila y columna)

Hemos discutido algunos de los casos de clasificación de vectores 2D en el siguiente conjunto 1.

Clasificación de vectores 2D en C++ | Conjunto 1 (Por fila y columna)

Más casos se discuten en este artículo.

Caso 3: Ordenar una fila particular de un vector 2D en orden descendente
Este tipo de ordenación ordena una fila seleccionada de un vector 2D en orden descendente. Esto se logra usando «sort()» y pasando iteradores de vector 1D como sus argumentos.

// C++ code to demonstrate sorting of a
// row of 2D vector in descending order
#include<iostream>
#include<vector> // for 2D vector
#include<algorithm> // for sort()
using namespace std;
   
int main()
{
    // Initializing 2D vector "vect" with
    // values
    vector< vector<int> > vect{{3, 5, 1},
                               {4, 8, 6},
                               {7, 2, 9}};
    // Number of rows;
    int m = vect.size();
   
    // Number of columns (Assuming all rows
    // are of same size).  We can have different
    // sizes though (like Java).
    int n = vect[0].size();
   
    // Displaying the 2D vector before sorting
    cout << "The Matrix before sorting 1st row is:\n";
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n ;j++)
           cout << vect[i][j] << " ";
        cout << endl;
    }
   
    // Use of "sort()" for sorting first row
    sort(vect[0].rbegin(), vect[0].rend());
   
    // Displaying the 2D vector after sorting
    cout << "The Matrix after sorting 1st row is:\n";
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n ;j++)
            cout << vect[i][j] << " ";
        cout << endl;
    }
   
    return 0;
}

Producción:

The Matrix before sorting 1st row is:
3 5 1 
4 8 6 
7 2 9 
The Matrix after sorting 1st row is:
5 3 1 
4 8 6 
7 2 9 

Caso 4: Ordenar todo el vector 2D en base a una columna en particular en orden descendente.
En este tipo de clasificación, el vector 2D se clasifica por completo en función de una columna elegida en orden descendente. Por ejemplo, si la columna elegida es la segunda, la fila con el mayor valor en la segunda columna se convierte en la primera fila, el segundo mayor valor en la segunda columna se convierte en la segunda fila y así sucesivamente.

{3, 5, 1},
{4, 8, 6},
{7, 2, 9};

Después de ordenar esta array por segunda columna, obtenemos

{4, 8, 6} // Fila con el mayor valor en la segunda columna
{3, 5, 1} // Fila con el segundo mayor valor en la segunda columna
{7, 2, 9}

Esto se logra pasando un tercer argumento en «sort()» como una llamada a la función explícita definida por el usuario.

// C++ code to demonstrate sorting of a
// 2D vector on basis of a column in
// descending order
#include<iostream>
#include<vector> // for 2D vector
#include<algorithm> // for sort()
using namespace std;
   
// Driver function to sort the 2D vector
// on basis of a particular column in 
// descending order
bool sortcol( const vector<int>& v1,
               const vector<int>& v2 ) {
    return v1[1] > v2[1];
}
   
int main()
{
    // Initializing 2D vector "vect" with
    // values
    vector< vector<int> > vect{{3, 5, 1},
                                {4, 8, 6},
                                {7, 2, 9}};
   
    // Number of rows;
    int m = vect.size();
   
    // Number of columns (Assuming all rows
    // are of same size).  We can have different
    // sizes though (like Java).
    int n = vect[0].size();
       
    // Displaying the 2D vector before sorting
    cout << "The Matrix before sorting is:\n";
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n ;j++)
            cout << vect[i][j] << " ";
        cout << endl;
    }                               
   
    // Use of "sort()" for sorting on basis
    // of 2nd column in descending order
    sort(vect.begin(), vect.end(),sortcol);
   
    // Displaying the 2D vector after sorting
    cout << "The Matrix after sorting is:\n";
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n ;j++)
            cout << vect[i][j] << " ";
        cout << endl;
    }
    return 0;
}

Producción:

The Matrix before sorting is:
3 5 1 
4 8 6 
7 2 9 
The Matrix after sorting is:
4 8 6 
3 5 1 
7 2 9 

Este artículo es una contribución de Manjeet Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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