Block swap algorithm for array rotation

Write a program for array rotation using a block swap algorithm.

The block swap algorithm for array rotation is an efficient algorithm that is used for array rotation. It can do your work in O(n) time complexity.

Example:

Input:  arr[]={4,8,6,1,2}, k = 3
Output: 1 2 4 8 6 

Approach

C++

#include <bits/stdc++.h>
using namespace std;

void swapSubArray(int arr[], int startint endint k)
{
    for (int i = 0i < ki++)
    {

        //swap two varibales
        swap(arr[start + i], arr[end + i]);
    }
}
void blockSwapAlgo(int arr[], int kint n)
{
    //base case if 0 elments or
    //elements are same as size of array
    if (k == 0 || k == n)
        return;
    if (k == (n - k))
    {
        swapSubArray(arr0, (n - k), k);
        return;
    }
    else if (k < (n - k))
    {
        swapSubArray(arr0, (n - k), k);
        blockSwapAlgo(arrk, (n - k));
    }
    else
    {
        swapSubArray(arr0k, (n - k));
        blockSwapAlgo((arr + n - k), (2 * k - n), k);
    }
}

int main()

{
    int arr[] = {48612};
    int size = sizeof(arr) / sizeof(arr[0]);
    int k = 3;

    blockSwapAlgo(arrksize);
    for (int i = 0i < sizei++)
    {
        cout << arr[i<< " ";
    }

    return 0;
}


No comments:

Post a Comment