# Sort an array which contain 1 to n values

Hello Everyone,

You have given an array which contain 1 to n element, your task is to sort this array in an efficient way and without replace with 1 to n numbers.
Examples :

Input : arr[] = {10, 7, 9, 2, 8,
3, 5, 4, 6, 1};
Output : 1 2 3 4 5 6 7 8 9 10

Native approach :
Sort this array with the use of any type of sorting method. it takes O(nlogn) minimum time.
Efficient approach :
Replace every element with it’s position. it takes O(n) efficient time and give you the sorted array. Let’s understand this approach with the code below.

• C++

`// Efficient C++ program to sort an array of`

`// numbers in range from 1 to n.`

`#include <bits/stdc++.h>`

`using` `namespace` `std;`

`// function for sort array`

`void` `sortit(` `int` `arr[], ` `int` `n)`

`{`

` ` `for` `(` `int` `i = 0; i < n; i++) {`

` ` `arr[i]=i+1;`

` ` `}`

`}`

`// Driver code`

`int` `main()`

`{`

` ` `int` `arr[] = { 10, 7, 9, 2, 8, 3, 5, 4, 6, 1 };`

` ` `int` `n = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]);`

` ` `// for sort an array`

` ` `sortit(arr, n);`

` ` `// for print all the element in sorted way`

` ` `for` `(` `int` `i = 0; i < n; i++)`

` ` `cout << arr[i] << ` `" "` `; `

`}`

Output :

1 2 3 4 5 6 7 8 9 10

• JAVA

`// Efficient Java program to sort an`

`// array of numbers in range from 1`

`// to n.`

`import` `java.io.*;`

`import` `java.util.*;`

`public` `class` `GFG {`

` `

` `

` ` `// function for sort array`

` ` `static` `void` `sortit(` `int` `[]arr, ` `int` `n)`

` ` `{`

` ` `for` `(` `int` `i = ` `0` `; i < n; i++)`

` ` `{`

` ` `arr[i]=i+` `1` `;`

` `

` `

` ` `}`

` ` `}`

` `

` ` `// Driver code`

` ` `public` `static` `void` `main(String args[])`

` ` `{`

` ` `int` `[]arr = {` `10` `, ` `7` `, ` `9` `, ` `2` `, ` `8` `,`

` ` `3` `, ` `5` `, ` `4` `, ` `6` `, ` `1` `};`

` ` `int` `n = arr.length;`

` `

` ` `// for sort an array`

` ` `sortit(arr, n);`

` `

` ` `// for print all the`

` ` `// element in sorted way`

` ` `for` `(` `int` `i = ` `0` `; i < n; i++)`

` ` `System.out.print(arr[i] + ` `" "` `);`

` ` `}`

`}`

Output :

1 2 3 4 5 6 7 8 9 10