কম্পিউটার টিউটোরিয়াল

রিভার্সাল অ্যালগরিদম দিয়ে অ্যারে রোটেশন C++-এ

দেয়া সমস্যায়, আমাদের একটি অ্যারে দেওয়া আছে, এবং আমাদের অ্যারেটি d এলিমেন্ট দিয়ে রিভার্সাল অ্যালগরিদম ব্যবহার করে রোটেট করতে হবে, উদাহরণস্বরূপ −

ইনপুট : arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2
আউটপুট : arr[] = [3, 4, 5, 6, 7, 1, 2]
ব্যাখ্যা : जैसा की आप देख सकते हैं हमें इस ऐरे को d = 2 से रोटेट करना है लेकिन हमारा मुख्य कार्य इसे रिवर्सल तकनीक का उपयोग करके प्राप्त करना है।

আমরা অ্যারে রোটেশনের জন্য রিভার্সাল টেকনিক দিয়ে কিছু ক্যালকুলেশন করি এবং উপসংহার করি যে −

  • প্রথমে, আমরা অ্যারেতার প্রথম d এলিমেন্ট রিভার্স করি।
  • দ্বিতীয়, আমরা বাকি এলিমেন্টগুলো রিভার্স করি।
  • তৃতীয়, আমরা পুরো অ্যারেটি রিভার্স করি।

এই তিনটি স্টেপ প্রয়োগ করে আমরা আমাদের রোটেটেড অ্যারে পেতে পারি।

সমাধানের পদ্ধতি

এই সমস্যায়, প্রথমে আমরা এলিমেন্ট রিভার্স করার একটি ফাংশন বানাব; এখন আমরা উপরের দেওয়া স্টেপগুলো ফলো করব।

উদাহরণ প্রোগ্রাম

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

void reverseArray(int arr[], int start, int end) { // আমাদের রিভার্সাল অ্যালগরিদম
    while (start < end) { // যদি স্টার্ট এন্ড-র সমান হয়, লুপ ব্রেক করব
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        start++;
        end--;
    }
    return;
}

void Rotate(int arr[], int d, int n) { // রোটেশন ফাংশন
    if (d == 0) // কোনো রোটেশন প্রয়োজন নেই
        return;
    d = d % n; // যখন d, n-র সমান হয়, আমাদের অ্যারে তার মূল রূপে ফিরে আসে
    reverseArray(arr, 0, d - 1); // প্রথম d এলিমেন্ট রিভার্স করা
    reverseArray(arr, d, n - 1); // বাকি এলিমেন্ট রিভার্স করা
    reverseArray(arr, 0, n - 1); // পুরো অ্যারে রিভার্স করা
    return;
}

int main() {
    int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; // দেয়া অ্যারে
    int n = sizeof(arr) / sizeof(arr[0]); // আমাদের অ্যারের সাইজ
    int d = 2;
    Rotate(arr, d, n);
    for (int i = 0; i < n; i++) // অ্যারে প্রিন্ট করা
        cout << arr[i] << " ";
    cout << "\n";
    return 0;
}

আউটপুট

3 4 5 6 7 1 2

উপরোক্ত কোডের ব্যাখ্যা

উপরোক্ত পদ্ধতিতে, আমরা প্রথমে আমাদের রিভার্সাল টেকনিক তৈরি করি যা তিনটি প্যারামিটার নেবে: অ্যারে, স্টার্টিং ইনডেক্স এবং এন্ডিং ইনডেক্স, এবং আমাদের অ্যারে স্টার্ট থেকে এন্ড পর্যন্ত রিভার্স করবে। এখন, যেহেতু আমরা আগে আমাদের অ্যালগরিদম ডেভেলপ করেছি, আমরা সেটি এই ফাংশন ব্যবহার করে প্রয়োগ করব। আমরা প্রথমে প্রথম d এলিমেন্ট রিভার্স করি। এখন দ্বিতীয়, আমরা বাকি এলিমেন্টগুলো রিভার্স করি, এবং শেষে আমরা পুরো অ্যারে রিভার্স করি। ফলস্বরূপ, আমাদের অ্যারে d-দ্বারা রোটেট হয়। রোটেট ফাংশনে, আমরা d = d % n করছি। এতে কারণ যদি আমরা একটি অ্যারের প্রথম n এলিমেন্ট রোটেট করি, উত্তর আমরা আগের মতোই পাব, তাই আমরা d-কে n দিয়ে মড করি।

উপসংহার

এই আর্টিকেলে, আমরা রিভার্সাল অ্যালগরিদম ব্যবহার করে অ্যারে রোটেশন করার সমস্যা সমাধান করেছি। আমরা এই সমস্যায় C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি (নরমাল) শিখেছি যেগুলো দিয়ে আমরা এই সমস্যা সমাধান করেছি। আমরা একই প্রোগ্রাম অন্যান্য ল্যাঙ্গুয়েজে লিখতে পারি যেমন C, Java, Python এবং অন্যান্য ল্যাঙ্গুয়েজ। আশা করি আপনি এই আর্টিকেলটিকে সহায়ক খুঁজে পাবেন।

  1. সি প্রোগ্রামিং-এ রিভার্সাল অ্যালগরিদম দিয়ে অ্যারে রোটেশন

  2. C++ প্রোগ্রামে অ্যারে লেফ্ট রোটেশন (Array Rotation)

  3. পাইথন প্রোগ্রাম: অ্যারের জন্য রিভার্সাল অ্যালগরিদম (Array Rotation)

  4. অ্যারে রোটেশনের পাইথন প্রোগ্রাম