# Minimum steps to convert an Array into permutation of numbers from 1 to N

• Last Updated : 28 Jun, 2022

Given an array arr of length N, the task is to count the minimum number of operations to convert given sequence into a permutation of first N natural numbers (1, 2, …., N). In each operation, increment or decrement an element by one.
Examples:

Input: arr[] = {4, 1, 3, 6, 5}
Output:
Apply decrement operation four times on 6
Input : arr[] = {0, 2, 3, 4, 1, 6, 8, 9}
Output :

Approach: An efficient approach is to sort the given array and for each element, find the difference between the arr[i] and i(1 based indexing). Find the sum of all such difference, and this will be the minimum steps required.
Below is the implementation of the above approach:

## CPP

 `// C++ program to find minimum number of steps to` `// convert a given sequence into a permutation`   `#include ` `using` `namespace` `std;`   `// Function to find minimum number of steps to` `// convert a given sequence into a permutation` `int` `get_permutation(``int` `arr[], ``int` `n)` `{` `    ``// Sort the given array` `    ``sort(arr, arr + n);`   `    ``// To store the required minimum` `    ``// number of operations` `    ``int` `result = 0;`   `    ``// Find the operations on each step` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``result += ``abs``(arr[i] - (i + 1));` `    ``}`   `    ``// Return the answer` `    ``return` `result;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `arr[] = { 0, 2, 3, 4, 1, 6, 8, 9 };`   `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);`   `    ``// Function call` `    ``cout << get_permutation(arr, n);`   `    ``return` `0;` `}`

## Java

 `// Java program to find minimum number of steps to` `// convert a given sequence into a permutation` `import` `java.util.*;`   `class` `GFG{` ` `  `// Function to find minimum number of steps to` `// convert a given sequence into a permutation` `static` `int` `get_permutation(``int` `arr[], ``int` `n)` `{` `    ``// Sort the given array` `    ``Arrays.sort(arr);` ` `  `    ``// To store the required minimum` `    ``// number of operations` `    ``int` `result = ``0``;` ` `  `    ``// Find the operations on each step` `    ``for` `(``int` `i = ``0``; i < n; i++) {` `        ``result += Math.abs(arr[i] - (i + ``1``));` `    ``}` ` `  `    ``// Return the answer` `    ``return` `result;` `}` ` `  `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `arr[] = { ``0``, ``2``, ``3``, ``4``, ``1``, ``6``, ``8``, ``9` `};` ` `  `    ``int` `n = arr.length;` ` `  `    ``// Function call` `    ``System.out.print(get_permutation(arr, n));` ` `  `}` `}`   `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 program to find minimum number of steps to` `# convert a given sequence into a permutation`   `# Function to find minimum number of steps to` `# convert a given sequence into a permutation` `def` `get_permutation(arr, n):`   `    ``# Sort the given array` `    ``arr ``=` `sorted``(arr)`   `    ``# To store the required minimum` `    ``# number of operations` `    ``result ``=` `0`   `    ``# Find the operations on each step` `    ``for` `i ``in` `range``(n):` `        ``result ``+``=` `abs``(arr[i] ``-` `(i ``+` `1``))`   `    ``# Return the answer` `    ``return` `result`   `# Driver code` `if` `__name__ ``=``=` `'__main__'``:` `    ``arr``=``[``0``, ``2``, ``3``, ``4``, ``1``, ``6``, ``8``, ``9``]` `    ``n ``=` `len``(arr)`   `    ``# Function call` `    ``print``(get_permutation(arr, n))`   `# This code is contributed by mohit kumar 29    `

## C#

 `// C# program to find minimum number of steps to` `// convert a given sequence into a permutation` `using` `System;` ` `  `class` `GFG{`   `// Function to find minimum number of steps to` `// convert a given sequence into a permutation` `static` `int` `get_permutation(``int` `[]arr, ``int` `n)` `{` `    ``// Sort the given array` `    ``Array.Sort(arr);`   `    ``// To store the required minimum` `    ``// number of operations` `    ``int` `result = 0;`   `    ``// Find the operations on each step` `    ``for` `(``int` `i = 0; i < n; i++) {` `        ``result += Math.Abs(arr[i] - (i + 1));` `    ``}`   `    ``// Return the answer` `    ``return` `result;` `}`   `// Driver Code` `public` `static` `void` `Main()` `{` `    ``int` `[]arr = { 0, 2, 3, 4, 1, 6, 8, 9 };`   `    ``int` `n = arr.Length;`   `    ``// Function call` `    ``Console.Write(get_permutation(arr, n));` `}` `}`   `// This code is contributed by shivanisinghss2110`

## Javascript

 ``

Output:

`7`

Time Complexity: O(n*log(n))
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :