Skip to content
Related Articles
Check whether a given array is a k sorted array or not
• Difficulty Level : Easy
• Last Updated : 26 May, 2021

Given an array of n distinct elements. Check whether the given array is a k sorted array or not. A k sorted array is an array where each element is at most k distances away from its target position in the sorted array.
For example, let us consider k is 2, an element at index 7 in the sorted array, can be at indexes 5, 6, 7, 8, 9 in the given array.

Examples:

```Input : arr[] = {3, 2, 1, 5, 6, 4}, k = 2
Output : Yes
Every element is at most 2 distance away
from its target position in the sorted array.

Input : arr[] = {13, 8, 10, 7, 15, 14, 12}, k = 3
Output : No
13 is more than k = 3 distance away
from its target position in the sorted array. ```

Copy elements of the original array arr[] to an auxiliary array aux[]
Sort aux[]. Now, for each element at index i in arr[], find its index j in aux[] using Binary Search. If for any element k < abs(i-j), then arr[] is not a k sorted array. Else it is a k sorted array. Here abs are the absolute value.

## C++

 `// C++ implementation to check whether the given array``// is a k sorted array or not``#include ``using` `namespace` `std;` `// function to find index of element 'x' in sorted 'arr'``// uses binary search technique``int` `binarySearch(``int` `arr[], ``int` `low, ``int` `high, ``int` `x)``{``    ``while` `(low <= high)``    ``{``        ``int` `mid = (low + high) / 2;``        ` `        ``if` `(arr[mid] == x)``            ``return` `mid;``        ``else` `if` `(arr[mid] > x)``            ``high = mid - 1;``        ``else`   `            ``low = mid + 1;   ``    ``}``}` `// function to check whether the given array is``// a 'k' sorted array or not``string isKSortedArray(``int` `arr[], ``int` `n, ``int` `k)``{``    ``// auxiliary array 'aux'``    ``int` `aux[n];``    ` `    ``// copy elements of 'arr' to 'aux'``    ``for` `(``int` `i = 0; i k, then that element is``        ``// not at-most k distance away from its``        ``// target position. Thus,  'arr' is not a``        ``// k sorted array``        ``if` `(``abs``(i - j) > k)``            ``return` `"No"``;``    ``}``    ` `    ``// 'arr' is a k sorted array``    ``return` `"Yes"``;   ``}` `// Driver program to test above``int` `main()``{``    ``int` `arr[] = {3, 2, 1, 5, 6, 4};``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);``    ``int` `k = 2;``    ``cout << ``"Is it a k sorted array?: "``         ``<< isKSortedArray(arr, n, k);``    ``return` `0;    ``}`

## Java

 `// Java implementation to check whether the given array``// is a k sorted array or not` `import` `java.util.Arrays;` `class` `Test``{``    ``// Method to check whether the given array is``    ``// a 'k' sorted array or not``    ``static` `String isKSortedArray(``int` `arr[], ``int` `n, ``int` `k)``    ``{``        ``// auxiliary array 'aux'``        ``int` `aux[] = ``new` `int``[n];``         ` `        ``// copy elements of 'arr' to 'aux'``        ``for` `(``int` `i = ``0``; i k, then that element is``            ``// not at-most k distance away from its``            ``// target position. Thus,  'arr' is not a``            ``// k sorted array``            ``if` `(Math.abs(i - j) > k)``                ``return` `"No"``;``        ``}``         ` `        ``// 'arr' is a k sorted array``        ``return` `"Yes"``;   ``    ``}` `    ``// Driver method``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = {``3``, ``2``, ``1``, ``5``, ``6``, ``4``};``        ``int` `k = ``2``;``        ` `        ``System.out.println(``"Is it a k sorted array ?: "` `+``                            ``isKSortedArray(arr, arr.length, k));``    ``}``}`

## Python3

 `# Python 3 implementation to check``# whether the given array is a k``# sorted array or not` `# function to find index of element``# 'x' in sorted 'arr' uses binary``# search technique``def` `binarySearch(arr, low, high, x):``    ``while` `(low <``=` `high):``        ``mid ``=` `int``((low ``+` `high) ``/` `2``)``        ` `        ``if` `(arr[mid] ``=``=` `x):``            ``return` `mid``        ``elif``(arr[mid] > x):``            ``high ``=` `mid ``-` `1``        ``else``:``            ``low ``=` `mid ``+` `1` `# function to check whether the given``# array is a 'k' sorted array or not``def` `isKSortedArray(arr, n, k):``    ` `    ``# auxiliary array 'aux'``    ``aux ``=` `[``0` `for` `i ``in` `range``(n)]``    ` `    ``# copy elements of 'arr' to 'aux'``    ``for` `i ``in` `range``(``0``, n, ``1``):``        ``aux[i] ``=` `arr[i]``    ` `    ``# sort 'aux'``    ``aux.sort(reverse ``=` `False``)``    ` `    ``# for every element of 'arr' at``    ``# index 'i', find its index 'j' in 'aux'``    ``for` `i ``in` `range``(``0``, n, ``1``):``        ` `        ``# index of arr[i] in sorted``        ``# array 'aux'``        ``j ``=` `binarySearch(aux, ``0``, n ``-` `1``, arr[i])``        ` `        ``# if abs(i-j) > k, then that element is``        ``# not at-most k distance away from its``        ``# target position. Thus, 'arr' is not a``        ``# k sorted array``        ``if` `(``abs``(i ``-` `j) > k):``            ``return` `"No"``    ` `    ``# 'arr' is a k sorted array``    ``return` `"Yes"` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ``arr ``=` `[``3``, ``2``, ``1``, ``5``, ``6``, ``4``]``    ``n ``=` `len``(arr)``    ``k ``=` `2``    ``print``(``"Is it a k sorted array?:"``,``           ``isKSortedArray(arr, n, k))` `# This code is contributed by``# Shashank_Sharma`

## C#

 `// C# implementation to check``// whether the given array is a``// k sorted array or not``using` `System;``using` `System.Collections;` `class` `GFG {``    ` `    ``// Method to check whether the given``    ``// array is a 'k' sorted array or not``    ``static` `String isKSortedArray(``int` `[]arr, ``int` `n, ``int` `k)``    ``{``        ``// auxiliary array 'aux'``        ``int` `[]aux = ``new` `int``[n];``        ` `        ``// copy elements of 'arr' to 'aux'``        ``for` `(``int` `i = 0; i k, then that element is``            ``// not at-most k distance away from its``            ``// target position. Thus, 'arr' is not a``            ``// k sorted array``            ``if` `(Math.Abs(i - j) > k)``                ``return` `"No"``;``        ``}``        ` `        ``// 'arr' is a k sorted array``        ``return` `"Yes"``;``    ``}` `    ``// Driver method``    ``public` `static` `void` `Main()``    ``{``        ``int` `[]arr = {3, 2, 1, 5, 6, 4};``        ``int` `k = 2;``        ` `        ``Console.WriteLine(``"Is it a k sorted array ?: "` `+``                           ``isKSortedArray(arr, arr.Length, k));``    ``}``}` `// This code is contributed by Sam007`

## Javascript

 ``

Output:

`Is it a k sorted array?: Yes`

Time Complexity: O(nlogn)
Auxiliary space: O(n)

This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer DSA Live Classes

My Personal Notes arrow_drop_up