Program to check if an array is sorted or not (Iterative and Recursive) - GeeksforGeeks

09 Jun, 2021
Given an array of size n, write a program to check if it is sorted in ascending order or not. Equal values are allowed in an array and two consecutive equal values are considered sorted.
Examples: 
Input : 20 21 45 89 89 90
Output : Yes

Input : 20 20 45 89 89 90
Output : Yes

Input : 20 20 78 98 99 97
Output : No
Recursive approach:The basic idea for the recursive approach:  
1: If size of array is zero or one, return true.
2: Check last two elements of array, if they are
   sorted, perform a recursive call with n-1
   else, return false.
If all the elements will be found sorted, n will
eventually fall to one, satisfying Step 1.
Below is the implementation using recursion:
C++
Java
Python3
C#
Javascript
// Recursive approach to check if an// Array is sorted or not#include <bits/stdc++.h>using namespace std; // Function that returns 0 if a pair// is found unsortedint arraySortedOrNot(int arr[], int n){    // Array has one or no element or the    // rest are already checked and approved.    if (n == 1 || n == 0)        return 1;     // Unsorted pair found (Equal values allowed)    if (arr[n - 1] < arr[n - 2])        return 0;     // Last pair was sorted    // Keep on checking    return arraySortedOrNot(arr, n - 1);} // Driver codeint main(){    int arr[] = { 20, 23, 23, 45, 78, 88 };    int n = sizeof(arr) / sizeof(arr[0]);    if (arraySortedOrNot(arr, n))        cout << "Yes\n";    else        cout << "No\n";}
// Recursive approach to check if an// Array is sorted or not class CkeckSorted {    // Function that returns 0 if a pair    // is found unsorted    static int arraySortedOrNot(int arr[], int n)    {        // Array has one or no element or the        // rest are already checked and approved.        if (n == 1 || n == 0)            return 1;         // Unsorted pair found (Equal values allowed)        if (arr[n - 1] < arr[n - 2])            return 0;         // Last pair was sorted        // Keep on checking        return arraySortedOrNot(arr, n - 1);    }     // main function    public static void main(String[] args)    {        int arr[] = { 20, 23, 23, 45, 78, 88 };        int n = arr.length;        if (arraySortedOrNot(arr, n) != 0)            System.out.println("Yes");        else            System.out.println("No");    }}
# Recursive approach to check if an# Array is sorted or not # Function that returns 0 if a pair# is found unsorted  def arraySortedOrNot(arr):     # Calculating length    n = len(arr)     # Array has one or no element or the    # rest are already checked and approved.    if n == 1 or n == 0:        return True     # Recursion applied till last element    return arr[0] <= arr[1] and arraySortedOrNot(arr[1:])  arr = [20, 23, 23, 45, 78, 88] # Displaying resultif arraySortedOrNot(arr):    print("Yes")else:    print("No")
// Recursive approach to check if an// Array is sorted or notusing System; class CkeckSorted {    // Function that returns 0 if a pair    // is found unsorted    static int arraySortedOrNot(int[] arr, int n)    {        // Array has one or no element or the        // rest are already checked and approved.        if (n == 1 || n == 0)            return 1;         // Unsorted pair found (Equal values allowed)        if (arr[n - 1] < arr[n - 2])            return 0;         // Last pair was sorted        // Keep on checking        return arraySortedOrNot(arr, n - 1);    }     // Driver Code    public static void Main(String[] args)    {        int[] arr = { 20, 23, 23, 45, 78, 88 };        int n = arr.Length;        if (arraySortedOrNot(arr, n) != 0)            Console.WriteLine("Yes");        else            Console.WriteLine("No");    }} // This code is contributed by 29AjayKumar
<script> // Recursive approach to check if an// Array is sorted or not // Function that returns 0 if a pair// is found unsortedfunction arraySortedOrNot(arr, n){         // Array has one or no element or the    // rest are already checked and approved.    if (n == 1 || n == 0)        return 1;     // Unsorted pair found (Equal values allowed)    if (arr[n - 1] < arr[n - 2])        return 0;     // Last pair was sorted    // Keep on checking    return arraySortedOrNot(arr, n - 1);} // Driver codelet arr = [ 20, 23, 23, 45, 78, 88 ];let n = arr.length; if (arraySortedOrNot(arr, n) != 0)    document.write("Yes");else    document.write("No"); // This code is contributed by sravan kumar G </script>
Output:
Yes
Time Complexity: O(n) Auxiliary Space: O(n) for Recursion Call Stack.
Another Recursive approach:
C++
Java
Python3
C#
Javascript
// C++ Recursive approach to check if an// Array is sorted or not#include <iostream>using namespace std; // Function that returns true if array is// sorted in non-decreasing order.bool arraySortedOrNot(int a[], int n){         // Base case    if (n == 1 || n == 0)    {        return true;    }         // Check if present index and index    // previous to it are in correct order    // and rest of the array is also sorted    // if true then return true else return    // false    return a[n - 1] >= a[n - 2] &&     arraySortedOrNot(a, n - 1);} // Driver codeint main(){    int arr[] = { 20, 23, 23, 45, 78, 88 };    int n = sizeof(arr) / sizeof(arr[0]);         // Function Call    if (arraySortedOrNot(arr, n))    {        cout << "Yes" << endl;    }    else    {        cout << "No" << endl;    }         return 0;} // This code is contributed by avanitrachhadiya2155
// Java Recursive approach to check if an// Array is sorted or notclass GFG {     // Function that returns true if array is    // sorted in non-decreasing order.    static boolean arraySortedOrNot(int a[], int n)    {          // base case        if (n == 1 || n == 0)            return true;               // check if present index and index        // previous to it are in correct order        // and rest of the array is also sorted        // if true then return true else return        // false        return a[n - 1] >= a[n - 2]            && arraySortedOrNot(a, n - 1);    }     // Driver code    public static void main(String[] args)    {         int arr[] = { 20, 23, 23, 45, 78, 88 };        int n = arr.length;                   // Function Call        if (arraySortedOrNot(arr, n))            System.out.print("Yes");        else            System.out.print("No");    }} // This code is contributed by Durgesh N. Birmiwal.
# Python3 recursive program to check# if an Array is sorted or not # Function that returns true if array# is sorted in non-decreasing order.def arraySortedOrNot(arr, n):     # Base case    if (n == 0 or n == 1):        return True             # Check if present index and index    # previous to it are in correct order    # and rest of the array is also sorted    # if true then return true else return    # false    return (arr[n - 1] >= arr[n - 2] and            arraySortedOrNot(arr, n - 1)) # Driver codearr = [ 20, 23, 23, 45, 78, 88 ]n = len(arr) # Function Callif (arraySortedOrNot(arr, n)):    print("Yes")else:    print("No")     # This code is contributed by Virusbuddah
// C# recursive approach to check if an// Array is sorted or notusing System; class GFG{     // Function that returns true if array is// sorted in non-decreasing order.static bool arraySortedOrNot(int[] a, int n){         // Base case    if (n == 1 || n == 0)    {        return true;    }         // Check if present index and index    // previous to it are in correct order    // and rest of the array is also sorted    // if true then return true else return    // false    return a[n - 1] >= a[n - 2] &&     arraySortedOrNot(a, n - 1);} // Driver codestatic public void Main(){    int[] arr = { 20, 23, 23, 45, 78, 88 };    int n = arr.Length;         // Function Call    if (arraySortedOrNot(arr, n))    {        Console.WriteLine("Yes");    }    else    {        Console.WriteLine("No");    }}} // This code is contributed by rag2127
<script> // JavaScript Recursive approach to check if an// Array is sorted or not // Function that returns true if array is// sorted in non-decreasing order.function arraySortedOrNot(a, n){         // Base case    if (n == 1 || n == 0)    {        return true;    }         // Check if present index and index    // previous to it are in correct order    // and rest of the array is also sorted    // if true then return true else return    // false    return a[n - 1] >= a[n - 2] &&     arraySortedOrNot(a, n - 1);} // Driver codelet arr = [ 20, 23, 23, 45, 78, 88 ];let n = arr.length; // Function Callif (arraySortedOrNot(arr, n)){    document.write("Yes" + "<br>");}else{    document.write("No" + "<br>");} // This code is contributed by Surbhi Tyagi. </script>
Yes
Time Complexity: O(n) Auxiliary Space: O(n) for Recursion Call Stack.
Iterative approach: The idea is pretty much the same. The benefit of the iterative approach is it avoids the usage of recursion stack space and recursion overhead.
Below is the implementation using iteration: 
C++
Java
Python3
C#
Javascript
// C++ program to check if an// Array is sorted or not#include <bits/stdc++.h>using namespace std; // Function that returns true if array is// sorted in non-decreasing order.bool arraySortedOrNot(int arr[], int n){    // Array has one or no element    if (n == 0 || n == 1)        return true;     for (int i = 1; i < n; i++)         // Unsorted pair found        if (arr[i - 1] > arr[i])            return false;     // No unsorted pair found    return true;} // Driver codeint main(){    int arr[] = { 20, 23, 23, 45, 78, 88 };    int n = sizeof(arr) / sizeof(arr[0]);    if (arraySortedOrNot(arr, n))        cout << "Yes\n";    else        cout << "No\n";}
// Recursive approach to check if an// Array is sorted or notclass GFG {     // Function that returns true if array is    // sorted in non-decreasing order.    static boolean arraySortedOrNot(int arr[], int n)    {         // Array has one or no element        if (n == 0 || n == 1)            return true;         for (int i = 1; i < n; i++)             // Unsorted pair found            if (arr[i - 1] > arr[i])                return false;         // No unsorted pair found        return true;    }     // driver code    public static void main(String[] args)    {         int arr[] = { 20, 23, 23, 45, 78, 88 };        int n = arr.length;         if (arraySortedOrNot(arr, n))            System.out.print("Yes\n");        else            System.out.print("No\n");    }} // This code is contributed by Anant Agarwal.
# Python3 program to check if an# Array is sorted or not # Function that returns true if array is# sorted in non-decreasing order.def arraySortedOrNot(arr, n):     # Array has one or no element    if (n == 0 or n == 1):        return True     for i in range(1, n):         # Unsorted pair found        if (arr[i-1] > arr[i]):            return False     # No unsorted pair found    return True  # Driver codearr = [20, 23, 23, 45, 78, 88]n = len(arr)if (arraySortedOrNot(arr, n)):    print("Yes")else:    print("No")     # This code is contributed by Anant Agarwal.
// Recursive approach to check if an// Array is sorted or notusing System; class GFG{     // Function that returns true if array is    // sorted in non-decreasing order.    static bool arraySortedOrNot(int []arr, int n)    {         // Array has one or no element        if (n == 0 || n == 1)            return true;         for (int i = 1; i < n; i++)             // Unsorted pair found            if (arr[i - 1] > arr[i])                return false;         // No unsorted pair found        return true;    }     // Driver code    public static void Main(String[] args)    {        int []arr = { 20, 23, 23, 45, 78, 88 };        int n = arr.Length;         if (arraySortedOrNot(arr, n))            Console.Write("Yes\n");        else            Console.Write("No\n");    }} // This code is contributed by PrinciRaj1992
<script> // Javascript program Recursive approach to check if an// Array is sorted or not     // Function that returns true if array is    // sorted in non-decreasing order.    function arraySortedOrNot(arr, n)    {         // Array has one or no element        if (n == 0 || n == 1)            return true;         for (let i = 1; i < n; i++)             // Unsorted pair found            if (arr[i - 1] > arr[i])                return false;         // No unsorted pair found        return true;    } // Driver Code         let arr = [ 20, 23, 23, 45, 78, 88 ];        let n = arr.length;         if (arraySortedOrNot(arr, n))            document.write("Yes\n");        else            document.write("No\n");   // This code is contributed by sanjoy_62.</script>
Output: 
Yes
Time Complexity: O(n) Auxiliary Space: O(1)
This article is contributed by Rohit Thapliyal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@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. 
princiraj1992
29AjayKumar
durgeshagrawal38
virusbuddha
avanitrachhadiya2155
rag2127
sravankumar8128
surbhityagi15
sanjoy_62
Arrays
Sorting
Arrays
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Maximum and minimum of an array using minimum number of comparisons
Top 50 Array Coding Problems for Interviews
Stack Data Structure (Introduction and Program)
Introduction to Arrays
Multidimensional Arrays in Java