Wednesday, 27 Oct 2021

# Count inversions in a permutation of first N natural numbers

Count inversions in a permutation of first N natural numbersGiven an array, arr[] of size N denoting a permutation of numbers from 1 to N, the task is to count the number of inversions in the array. Note: Two array elements a[i] and a[j] form an inversion if a[i] > a[j] and i < j.Examples:Input: arr[] = {2, 3, 1, 5, 4}Output: 3Explanation: Given array has 3 inversions: (2, 1), (3, 1), (5, 4).Input: arr[] = {3, 1, 2}Output: 2Explanation: Given array has 2 inversions: (3, 1), (3, 2).Different methods to solve inversion count has been discussed in the following articles:  Approach: This problem can be solved by using binary search. Follow the steps below to solve the problem:Store the numbers in the range [1, N] in increasing order in a vector, V.Initialize a variable, ans as 0 to store the number of inversions in the array, arr[].Iterate in the range [0, N-1] using the variable iPrint the value of ans as the result.Below is the implementation of the above approach:C++14#include using namespace std;int countInversions(int arr[], int n){    vector v;        for (int i = 1; i