# Sorting all array elements except one

• Difficulty Level : Easy

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} ```

## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

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 <bits/stdc++.h>
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
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
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
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
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] + " ");
}
}

```

## PHP

```<?php
// PHP program to sort all
// elements except element
// at index k.
function sortExceptK(&\$arr, \$k, \$n)
{
// Move k-th element to end
\$t = \$arr[\$k];
\$arr[\$k] = \$arr[\$n - 1];
\$arr[\$n - 1] = \$t;

// Sort all elements
// except last
\$t = \$arr[count(\$arr) - 1];
\$arr = array_slice(\$arr, 0, -1);
sort(\$arr);
array_push(\$arr, \$t);

// Store last element
// (originally k-th)
\$last = \$arr[\$n - 1];

// Move all elements from
// k-th to one position ahead.
for (\$i = \$n - 1; \$i > \$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

```<script>
// Javascript program to sort all elements except
// element at index k.

function sortExceptK(arr, k, n)
{

// Move k-th element to end
let temp = arr[k];
arr[k] = arr[n-1];
arr[n-1] = temp;

// Sort all elements except last
arr.sort(function(a, b){
return a - b});

// Store last element (originally k-th)
let last = arr[n-1];

// Move all elements from k-th to one
for (let i = n-1; i > k; i--)
arr[i] = arr[i-1];

// Restore k-th element
arr[k] = last;

// Move k-th element to end
temp = arr[k];
arr[k] = arr[n-1];
arr[n-1] = temp;

return 0;
}

let a = [10, 4, 11, 7, 6, 20 ];
let k = 2;
let n = a.length;

sortExceptK(a, k, n);

for(let i = 0; i < n; i++)
document.write(a[i] + " ");

</script>```
Output:
`4 6 11 7 10 20 `

My Personal Notes arrow_drop_up