Skip to main content

K-Messed Array Sort

MediumPremium

Given an array of integers arr where each element is at most k places away from its sorted position, code an efficient function sortKMessedArray that sorts arr. For instance, for an input array of size 10 and k = 2, an element belonging to index 6 in the sorted array will be located at either index 4, 5, 6, 7 or 8 in the input array.

Analyze the time and space complexities of your solution.

Example

input: arr = [1, 4, 5, 2, 3, 7, 8, 6, 10, 9], k = 2 output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

How well do you remember Insertion Sort and Heapsort? Take a moment to review our Sorting lesson on these topics if needed.

Take a step back and think about how k-sorting makes it easier to divide the array into smaller overlapping chunks (windows) and then sort in an iterative way.

What can you do with a sliding window of size k+1?

Were you tempted to use something like quicksort or mergesort? Remember the array is nearly-sorted (k-sorted), and this will yield suboptimal solutions.

Did you check for mistakes in your calculations and out-of-bounds array indices?