Skip to content
Related Articles

Related Articles

Sort M elements of given circular array starting from index K
  • Last Updated : 08 Mar, 2021

Given a circular array arr[] of size N and two integers K and M, the task is to sort M array elements starting from the index K.

Examples:

Input: arr[] = {4, 1, 6, 5, 3}, K = 2, M = 3
Output: 4 1 3 5 6
Explanation: After sorting 3 array elements starting from index 2 modifies arr[] to {4, 1, 3, 5, 6}.

Input: arr[] = {67, 2, 9, 7, 1}, K = 4, M = 3
Output: 2 67 9 7 1
Explanation: After sorting 3 array elements starting from index 4 modifies arr[] to {2, 67, 9, 7, 1}.

Approach: The idea is to swap the adjacent elements in the circular array if the elements of them are not in the correct order. Follow the steps below to solve the given problem:



Below is the implementation of the above approach:

C++




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the circular array
void printCircularArray(int arr[], int n)
{
    // Print the array
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
}
 
// Function to sort m elements of diven
// circular array starting from index k
void sortCircularArray(int arr[], int n,
                       int k, int m)
{
    // Traverse M elements
    for (int i = 0; i < m; i++) {
 
        // Iterate from index k to k + m - 1
        for (int j = k; j < k + m - 1; j++) {
 
            // Check if the next element
            // in the circular array is
            // less than the current element
            if (arr[j % n]
                > arr[(j + 1) % n]) {
 
                // Swap current element
                // with the next element
                swap(arr[j % n], arr[(j + 1) % n]);
            }
        }
    }
 
    // Print the circular array
    printCircularArray(arr, n);
}
 
// Driver Code
int main()
{
    int arr[] = { 4, 1, 6, 5, 3 };
    int K = 2, M = 3;
    int N = sizeof(arr) / sizeof(arr[0]);
 
    // Function Call
    sortCircularArray(arr, N, K, M);
 
    return 0;
}

Java




// Java program for the above approach
class GFG{
      
// Function to print the circular array
static void printCircularArray(int arr[], int n)
{
    // Print the array
    for (int i = 0; i < n; i++) {
        System.out.print(arr[i] + " ");
    }
}
  
// Function to sort m elements of diven
// circular array starting from index k
static void sortCircularArray(int arr[], int n,
                       int k, int m)
{
    // Traverse M elements
    for (int i = 0; i < m; i++) {
  
        // Iterate from index k to k + m - 1
        for (int j = k; j < k + m - 1; j++) {
  
            // Check if the next element
            // in the circular array is
            // less than the current element
            if (arr[j % n]
                > arr[(j + 1) % n]) {
  
                // Swap current element
                // with the next element
                int t = arr[j % n];
                arr[j % n] = arr[(j + 1) % n];
                arr[(j + 1) % n] = t;
            }
        }
    }
  
    // Print the circular array
    printCircularArray(arr, n);
}
  
// Driver Code
public static void main (String[] args)
{  
    int[] arr = { 4, 1, 6, 5, 3 };
    int K = 2, M = 3;
    int N = arr.length;
  
    // Function Call
    sortCircularArray(arr, N, K, M);
}
}
 
// This code is contributed by susmitakundugoaldanga

Python3




# Python3 program for the above approach
 
# Function to print the circular array
def printCircularArray(arr, n):
     
    # Print the array
    for i in range(n):
        print(arr[i], end = " ")
 
# Function to sort m elements of diven
# circular array starting from index k
def sortCircularArray(arr, n, k, m):
 
    # Traverse M elements
    for i in range(m):
 
        # Iterate from index k to k + m - 1
        for j in range(k, k + m - 1):
 
            # Check if the next element
            # in the circular array is
            # less than the current element
            if (arr[j % n] > arr[(j + 1) % n]):
 
                # Swap current element
                # with the next element
                arr[j % n], arr[(j + 1) % n] = (arr[(j + 1) % n],
                                                arr[j % n])
                 
    # Print the circular array
    printCircularArray(arr, n)
     
# Driver Code
if __name__ == "__main__" :
 
    arr = [ 4, 1, 6, 5, 3 ]
    K = 2
    M = 3
    N = len(arr)
     
    # Function Call
    sortCircularArray(arr, N, K, M)
 
# This code is contributed by AnkThon

C#




// C# program for the above approach
using System;
 
class GFG
{
          
    // Function to print the circular array
    static void printCircularArray(int []arr, int n)
    {
        // Print the array
        for (int i = 0; i < n; i++)
        {
            Console.Write(arr[i] + " ");
        }
    }
      
    // Function to sort m elements of diven
    // circular array starting from index k
    static void sortCircularArray(int []arr, int n,
                           int k, int m)
    {
       
        // Traverse M elements
        for (int i = 0; i < m; i++)
        {
      
            // Iterate from index k to k + m - 1
            for (int j = k; j < k + m - 1; j++)
            {
      
                // Check if the next element
                // in the circular array is
                // less than the current element
                if (arr[j % n]
                    > arr[(j + 1) % n]) {
      
                    // Swap current element
                    // with the next element
                    int t = arr[j % n];
                    arr[j % n] = arr[(j + 1) % n];
                    arr[(j + 1) % n] = t;
                }
            }
        }
      
        // Print the circular array
        printCircularArray(arr, n);
    }
      
    // Driver Code
    public static void Main (string[] args)
    {  
        int[] arr = { 4, 1, 6, 5, 3 };
        int K = 2, M = 3;
        int N = arr.Length;
      
        // Function Call
        sortCircularArray(arr, N, K, M);
    }
}
 
// This code is contributed by AnkThon

Javascript




<script>
 
// JavaScript program for the above approach
 
// Function to print the circular array
function printCircularArray(arr, n)
{
    // Print the array
    for (let i = 0; i < n; i++) {
        document.write(arr[i] + " ");
    }
}
 
// Function to sort m elements of diven
// circular array starting from index k
function sortCircularArray(arr, n, k, m)
{
    // Traverse M elements
    for (let i = 0; i < m; i++) {
 
        // Iterate from index k to k + m - 1
        for (let j = k; j < k + m - 1; j++) {
 
            // Check if the next element
            // in the circular array is
            // less than the current element
            if (arr[j % n]
                > arr[(j + 1) % n]) {
 
                // Swap current element
                // with the next element
                let t = arr[j % n];
                arr[j % n] = arr[(j + 1) % n];
                arr[(j + 1) % n] = t;
            }
        }
    }
 
    // Print the circular array
    printCircularArray(arr, n);
}
 
// Driver Code
    let arr = [ 4, 1, 6, 5, 3 ];
    let K = 2, M = 3;
    let N = arr.length;
 
    // Function Call
    sortCircularArray(arr, N, K, M);
     
// This code is contributed by Surbhi Tyagi.
 
</script>

Output:

4 1 3 5 6

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

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :