# Check if a given array is sorted in Spiral manner or not

• Difficulty Level : Easy
• Last Updated : 22 Apr, 2021

Given an array arr[] of size N, the task is to check if the array is spirally sorted or not. If found to be true, then print “YES”. Otherwise, print “NO”.

Note: An array is spirally sorted if arr[0] â‰¤ arr[N – 1] â‰¤ arr[1] â‰¤ arr[N – 2] …

Examples:

Input: arr[] = { 1, 10, 14, 20, 18, 12, 5 }
Output: YES
Explanation:
arr[0] < arr[6]
arr[1] < arr[5]
arr[2] < arr[4]
Therefore, the required output is YES.

Input: arr[] = { 1, 2, 4, 3 }
Output: NO

Approach: The idea is to traverse the array and for every array element, say arr[i], check if arr[i] is less than or equal to arr[N – i – 1] and arr[N – i – 1] less than or equal to arr[i + 1] or not. If found to be false, then print “NO”. Otherwise, if all array elements satisfy the condition, then print “YES”. Follow the steps below to solve the problem:

• Initialize two variables, say start and end, to store the start and end indices of the given array.
• Iterate a loop while start is less than end, and check if arr[start] less than or equal to arr[end] and arr[end] is less than or equal to arr[start + 1] or not. If found to be false, then print “NO”.
• Otherwise, print “YES”.

Below is the implementation of the above approach:

## C++14

 `// C++ program to implement``// the above approach``#include ``using` `namespace` `std;` `// Function to check if the array is``// spirally sorted or not``bool` `isSpiralSorted(``int` `arr[], ``int` `n)``{` `    ``// Stores start index``    ``// of the array``    ``int` `start = 0;` `    ``// Stores end index``    ``// of an array``    ``int` `end = n - 1;` `    ``while` `(start < end) {` `        ``// If arr[start]``        ``// greater than arr[end]``        ``if` `(arr[start] > arr[end]) {``            ``return` `false``;``        ``}` `        ``// Update start``        ``start++;` `        ``// If arr[end]``        ``// greater than arr[start]``        ``if` `(arr[end] > arr[start]) {``            ``return` `false``;``        ``}` `        ``// Update end``        ``end--;``    ``}` `    ``return` `true``;``}` `// Driver Code``int` `main()``{``    ``int` `arr[] = { 1, 10, 14, 20, 18, 12, 5 };` `    ``int` `N = ``sizeof``(arr) / ``sizeof``(arr[0]);` `    ``// Function Call``    ``if` `(isSpiralSorted(arr, N))``        ``cout << ``"YES"` `<< endl;``    ``else``        ``cout << ``"NO"` `<< endl;``    ``return` `0;``}`

## Java

 `// Java program to implement``// the above approach``import` `java.util.*;` `class` `GFG{` `  ``// Function to check if the array is``  ``// spirally sorted or not``  ``static` `boolean` `isSpiralSorted(``int``[] arr, ``int` `n)``  ``{` `    ``// Stores start index``    ``// of the array``    ``int` `start = ``0``;` `    ``// Stores end index``    ``// of an array``    ``int` `end = n - ``1``;` `    ``while` `(start < end)``    ``{` `      ``// If arr[start]``      ``// greater than arr[end]``      ``if` `(arr[start] > arr[end])``      ``{``        ``return` `false``;``      ``}` `      ``// Update start``      ``start++;` `      ``// If arr[end]``      ``// greater than arr[start]``      ``if` `(arr[end] > arr[start])``      ``{``        ``return` `false``;``      ``}` `      ``// Update end``      ``end--;``    ``}       ``    ``return` `true``;``  ``}` `  ``// Driver code``  ``public` `static` `void` `main(String[] args)``  ``{``    ``int``[] arr = { ``1``, ``10``, ``14``, ``20``, ``18``, ``12``, ``5` `};  ``    ``int` `N = arr.length;` `    ``// Function Call``    ``if` `(isSpiralSorted(arr, N) != ``false``)``      ``System.out.print(``"YES"``);``    ``else``      ``System.out.print(``"NO"``);``  ``}``}` `// This code is contributed by sanjoy_62`

## Python3

 `# Python3 program to implement``# the above approach` `# Function to check if the array is``# spirally sorted or not``def` `isSpiralSorted(arr, n) :` `    ``# Stores start index``    ``# of the array``    ``start ``=` `0``;` `    ``# Stores end index``    ``# of an array``    ``end ``=` `n ``-` `1``;``    ``while` `(start < end) :` `        ``# If arr[start]``        ``# greater than arr[end]``        ``if` `(arr[start] > arr[end]) :``            ``return` `False``;` `        ``# Update start``        ``start ``+``=` `1``;` `        ``# If arr[end]``        ``# greater than arr[start]``        ``if` `(arr[end] > arr[start]) :``            ``return` `False``;` `        ``# Update end``        ``end ``-``=` `1``;``    ``return` `True``;` `# Driver Code``if` `__name__ ``=``=`  `"__main__"` `:``    ``arr ``=` `[ ``1``, ``10``, ``14``, ``20``, ``18``, ``12``, ``5` `];``    ``N ``=` `len``(arr);` `    ``# Function Call``    ``if` `(isSpiralSorted(arr, N)) :``        ``print``(``"YES"``);``    ``else` `:``        ``print``(``"NO"``);``        ` `    ``# This code is contributed by AnkThon`

## C#

 `// C# program to implement``// the above approach``using` `System;``using` `System.Collections.Generic;``class` `GFG``{``    ` `    ``// Function to check if the array is``    ``// spirally sorted or not``    ``static` `bool` `isSpiralSorted(``int``[] arr, ``int` `n)``    ``{``      ` `        ``// Stores start index``        ``// of the array``        ``int` `start = 0;``      ` `        ``// Stores end index``        ``// of an array``        ``int` `end = n - 1;``      ` `        ``while` `(start < end)``        ``{``      ` `            ``// If arr[start]``            ``// greater than arr[end]``            ``if` `(arr[start] > arr[end])``            ``{``                ``return` `false``;``            ``}``      ` `            ``// Update start``            ``start++;``      ` `            ``// If arr[end]``            ``// greater than arr[start]``            ``if` `(arr[end] > arr[start])``            ``{``                ``return` `false``;``            ``}``      ` `            ``// Update end``            ``end--;``        ``}``      ` `        ``return` `true``;``    ``}` `  ``// Driver code``  ``static` `void` `Main()``  ``{``    ``int``[] arr = { 1, 10, 14, 20, 18, 12, 5 };  ``    ``int` `N = arr.Length;``  ` `    ``// Function Call``    ``if` `(isSpiralSorted(arr, N))``        ``Console.WriteLine(``"YES"``);``    ``else``        ``Console.WriteLine(``"NO"``);``  ``}``}` `// This code is contributed bydivyesh072019`

## Javascript

 ``

Output:

`YES`

Time Complexity: O(N)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up