Ordenar una array de acuerdo con otra array usando par en STL

Nos dan dos arrays. Necesitamos ordenar una array de acuerdo con otra.

Ejemplos:

Input : 2 1 5 4 9 3 6 7 10 8
        A B C D E F G H I J

Output : 1 2 3 4 5 6 7 8 9 10 
         B A F D C G H J E I 
Here we are sorting second array
(a character array) according to 
the first array (an integer array).

Hemos discutido diferentes formas en la publicación a continuación.
Ordenar una array según el orden definido por otra array

En esta publicación nos estamos enfocando en usar el contenedor de pares presente en STL de C++.

Para lograr nuestra tarea, vamos a hacer pares de elementos respectivos de ambas arrays. Luego, simplemente use la función de ordenación. Lo importante a tener en cuenta es que el primer elemento de los pares debe ser de la array según la cual se realizará la clasificación.

// Sort an array according to 
// other using pair in STL.
#include <bits/stdc++.h>
using namespace std;
  
// Function to sort character array b[]
// according to the order defined by a[]
void pairsort(int a[], char b[], int n)
{
    pair<int, char> pairt[n];
  
    // Storing the respective array
    // elements in pairs.
    for (int i = 0; i < n; i++) 
    {
        pairt[i].first = a[i];
        pairt[i].second = b[i];
    }
  
    // Sorting the pair array.
    sort(pairt, pairt + n);
      
    // Modifying original arrays
    for (int i = 0; i < n; i++) 
    {
        a[i] = pairt[i].first;
        b[i] = pairt[i].second;
    }
}
  
// Driver function
int main()
{
    int a[] = {2, 1, 5, 4, 9, 3, 6, 7, 10, 8};
    char b[] = {'A', 'B', 'C', 'D', 'E', 'F', 
                         'G', 'H', 'I', 'J'};
                           
    int n = sizeof(a) / sizeof(a[0]);
      
    // Function calling
    pairsort(a, b, n);
  
    for (int i = 0; i < n; i++)
        cout << a[i] << " ";
    cout << endl;
  
    for (int i = 0; i < n; i++)
        cout << b[i] << " ";
          
    return 0;
}

Producción:

1 2 3 4 5 6 7 8 9 10 
B A F D C G H J E I 

Este artículo es una contribución de Vineet Joshi . 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 *