Sort an array according to the order defined by another array

Write a program to sort an array according to the order defined by another array.

Example:

Input:  A[]={5,8,1,5,7,1,3,4,9,4}, B[]={3,5,7,2}
Output: 3 5 5 7 1 1 4 4 8 9 

Approach

C++

#include <bits/stdc++.h>
using namespace std;

void sortArrayOrder(vector<int&Avector<int&B)
{
    map<intintmp;
    for (int i = 0i < A.size(); i++)
    {
        mp[A[i]]++;
    }
    int index = 0;
    for (int i = 0i < B.size(); i++)
    {
        while (mp[B[i]])
        {
            A[index] = B[i];
            mp[B[i]]--;
            index++;
        }
        mp.erase(B[i]);
    }
    for (auto it = mp.begin(); it != mp.end(); it++)
    {
        while (it->second--)
        {
            A[index] = it->first;
            index++;
        }
    }
}
int main()
{
    vector<intA = {5815713494};

    vector<intB = {3572};

    sortArrayOrder(AB);
    for (int i = 0i < A.size(); i++)
    {
        cout << A[i] << " ";
    }
    return 0;
}


No comments:

Post a Comment