Realice un seguimiento de los índices anteriores después de ordenar un vector en C++ STL

Requisito previo: vector , clasificación de pares de vectores

Dado un vector, realice un seguimiento de los índices actuales correspondientes a cada elemento y, después de ordenar, imprima el elemento con sus índices respectivos anteriores.

Ejemplos:

Entrada: Arr[] = {2, 5, 3, 7, 1}
Salida: {1, 4} {2, 0} {3, 2} {5, 1} {7, 3}
Explicación:
antes de ordenar [índice (elemento)]: [0(2), 1(5), 2(3), 3(7), 4(1)]
Después de ordenar [anterior_índice(elemento)]: [4(1), 0(2) , 2(3), 1(5), 3(7)]

Entrada: Arr[] = {4, 5, 10, 8, 3, 11}
Salida: {3, 4} {4, 0} {5, 1} {8, 3} {10, 2} {11, 5 }

Enfoque: La idea es almacenar cada elemento con su índice actual en un par de vectores y luego ordenar todos los elementos del vector. Finalmente, imprimir los elementos con su índice asociado.

A continuación se muestra la implementación del enfoque anterior:

// C++ implementation to keep track
// of previous indexes
// after sorting a vector
  
#include <bits/stdc++.h>
using namespace std;
  
void sortArr(int arr[], int n)
{
  
    // Vector to store element
    // with respective present index
    vector<pair<int, int> > vp;
  
    // Inserting element in pair vector
    // to keep track of previous indexes
    for (int i = 0; i < n; ++i) {
        vp.push_back(make_pair(arr[i], i));
    }
  
    // Sorting pair vector
    sort(vp.begin(), vp.end());
  
    // Displaying sorted element
    // with previous indexes
    // corresponding to each element
    cout << "Element\t"
         << "index" << endl;
    for (int i = 0; i < vp.size(); i++) {
        cout << vp[i].first << "\t"
             << vp[i].second << endl;
    }
}
  
// Driver code
int main()
{
    int arr[] = { 2, 5, 3, 7, 1 };
    int n = sizeof(arr) / sizeof(arr[0]);
    sortArr(arr, n);
  
    return 0;
}
Producción:

Element    index
1    4
2    0
3    2
5    1
7    3

Publicación traducida automáticamente

Artículo escrito por VikashKumr 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 *