# Sorting all array elements except one

Last Updated : 29 Mar, 2024

Given an array, a positive integer, sort the array in ascending order such that the element at index K in the unsorted array stays unmoved and all other elements are sorted.

Examples:

```Input : arr[] = {10, 4, 11, 7, 6, 20}
k = 2;
Output : arr[] = {4, 6, 11, 7, 10, 20}

Input : arr[] = {30, 20, 10}
k = 0
Output : arr[] = {30, 10, 20} ```

A simple solution is to copy all elements except k-th of a given array to another array. Then sort the other array using a sorting algorithm. Finally, again copy the sorted array to the original array. While copying, skip k-th element.

Below is an efficient solution.

1. Swap k-th element with the last element.
2. Sort all elements except the last.
3. For every element from (k+1)-th to last, move them one position ahead.1
4. Copy k-th element back to position k.

## C++

 `// CPP program to sort all elements except ` `// element at index k. ` `#include ` `using` `namespace` `std; ` ` `  `int` `sortExceptK(``int` `arr[], ``int` `k, ``int` `n) ` `{ ` `    ``// Move k-th element to end ` `    ``swap(arr[k], arr[n-1]); ` ` `  `    ``// Sort all elements except last ` `    ``sort(arr, arr + n - 1); ` ` `  `    ``// Store last element (originally k-th) ` `    ``int` `last = arr[n-1]; ` ` `  `    ``// Move all elements from k-th to one ` `    ``// position ahead. ` `    ``for` `(``int` `i=n-1; i>k; i--) ` `       ``arr[i] = arr[i-1]; ` ` `  `    ``// Restore k-th element ` `    ``arr[k] = last; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `a[] = {10, 4, 11, 7, 6, 20 }; ` `    ``int` `k = 2; ` `    ``int` `n = ``sizeof``(a) / ``sizeof``(a[0]); ` `    ``sortExceptK(a, k, n); ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``cout << a[i] << ``" "``; ` `} `

## Java

 `// Java program to sort all elements except ` `// element at index k. ` `import` `java.util.Arrays; ` ` `  `class` `GFG { ` `     `  `    ``static` `int` `sortExceptK(``int` `arr[], ``int` `k, ``int` `n) ` `    ``{ ` `         `  `        ``// Move k-th element to end ` `        ``int` `temp = arr[k]; ` `        ``arr[k] = arr[n-``1``]; ` `        ``arr[n-``1``] = temp; ` `     `  `        ``// Sort all elements except last ` `        ``Arrays.sort(arr, ``0``, n-``1``); ` `     `  `        ``// Store last element (originally k-th) ` `        ``int` `last = arr[n-``1``]; ` `     `  `        ``// Move all elements from k-th to one ` `        ``// position ahead. ` `        ``for` `(``int` `i = n-``1``; i > k; i--) ` `        ``arr[i] = arr[i-``1``]; ` `     `  `        ``// Restore k-th element ` `        ``arr[k] = last; ` `        ``return` `0``; ` `    ``} ` `     `  `    ``//Driver code ` `    ``public` `static` `void` `main (String[] args) ` `    ``{ ` `        ``int` `a[] = {``10``, ``4``, ``11``, ``7``, ``6``, ``20` `}; ` `        ``int` `k = ``2``; ` `        ``int` `n = a.length; ` `         `  `        ``sortExceptK(a, k, n); ` `         `  `        ``for` `(``int` `i = ``0``; i < n; i++) ` `            ``System.out.print(a[i] + ``" "``); ` `    ``} ` `} ` ` `  `//This code is contributed by Anant Agarwal. `

## Python3

 `# Python3 program to sort all elements except ` `# element at index k. ` `def` `sortExcept(arr, k, n): ` ` `  `    ``# Move k-th element to end ` `    ``arr[k], arr[``-``1``] ``=` `arr[``-``1``], arr[k] ` ` `  `    ``# Sort all elements except last ` `    ``arr ``=` `sorted``(arr, key ``=` `lambda` `i: (i ``is` `arr[``-``1``], i)) ` `     `  `    ``# Store last element (originally k-th) ` `    ``last ``=` `arr[``-``1``] ` ` `  `    ``# Move all elements from k-th to one ` `    ``# position ahead. ` `    ``i ``=` `n ``-` `1` `    ``while` `i > k: ` `        ``arr[i] ``=` `arr[i ``-` `1``] ` `        ``i ``-``=` `1` ` `  `    ``# Restore k-th element ` `    ``arr[k] ``=` `last ` `    ``return` `arr ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``a ``=` `[``10``, ``4``, ``11``, ``7``, ``6``, ``20``] ` `    ``k ``=` `2` `    ``n ``=` `len``(a) ` `    ``a ``=` `sortExcept(a, k, n) ` `    ``print``(``" "``.join(``list``(``map``(``str``, a)))) ` `     `  `# This code is contributed by Shivam Singh. `

## C#

 `// C# program to sort all elements except ` `// element at index k. ` `using` `System; ` ` `  `public` `class` `GFG { ` `     `  `    ``static` `int` `sortExceptK(``int``[] arr, ``int` `k, ``int` `n) ` `    ``{ ` `        ``// Move k-th element to end ` `        ``int` `temp = arr[k]; ` `        ``arr[k] = arr[n - 1]; ` `        ``arr[n - 1] = temp; ` ` `  `        ``// Sort all elements except last ` `        ``Array.Sort(arr, 0, n - 1); ` ` `  `        ``// Store last element (originally k-th) ` `        ``int` `last = arr[n - 1]; ` ` `  `        ``// Move all elements from k-th to one ` `        ``// position ahead. ` `        ``for` `(``int` `i = n - 1; i > k; i--) ` `            ``arr[i] = arr[i - 1]; ` ` `  `        ``// Restore k-th element ` `        ``arr[k] = last; ` `         `  `        ``return` `0; ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int``[] a = { 10, 4, 11, 7, 6, 20 }; ` `        ``int` `k = 2; ` `        ``int` `n = a.Length; ` ` `  `        ``sortExceptK(a, k, n); ` ` `  `        ``for` `(``int` `i = 0; i < n; i++) ` `        ``Console.Write(a[i] + ``" "``); ` `    ``} ` `} ` ` `  `// This article is contributed by shiv_bhakt `

## PHP

 ` ``\$k``; ``\$i``--) ` `    ``\$arr``[``\$i``] = ``\$arr``[``\$i` `- 1]; ` ` `  `    ``// Restore k-th element ` `    ``\$arr``[``\$k``] = ``\$last``; ` `} ` ` `  `// Driver code ` `\$a` `= ``array``(10, 4, 11,  ` `            ``7, 6, 20 ); ` `\$k` `= 2; ` `\$n` `= ``count``(``\$a``); ` `sortExceptK(``\$a``, ``\$k``, ``\$n``); ` ` `  `for` `(``\$i` `= 0; ``\$i` `< ``\$n``; ``\$i``++) ` `    ``echo` `(``\$a``[``\$i``].``" "``); ` `     `  `// This code is contributed by  ` `// Manish Shaw(manishshaw1) ` `?> `

## Javascript

 ``

Output:

`4 6 11 7 10 20 `

Time Complexity: O(n*log(n)) where n is the number of elements.
Auxiliary Space: O(1)