কম্পিউটার

অ্যারে রোটেশনের জন্য বিপরীত অ্যালগরিদমের জন্য সি প্রোগ্রাম


একটি অ্যালগরিদম নির্দেশাবলীর একটি সেট যা প্রদত্ত সমস্যা সমাধানের জন্য সঞ্চালিত হয়। এখানে, আমরা অ্যারে রোটেশনের জন্য রিভার্সাল অ্যালগরিদম নিয়ে আলোচনা করব এবং রিভার্সাল অ্যালগরিদমের জন্য একটি প্রোগ্রাম তৈরি করব।

এখন, আসুন কিছু শর্তে যাই যা এই সমস্যাটি সমাধান করার জন্য আমাদের জানতে হবে −

অ্যারে - একই ডেটা টাইপের উপাদানগুলির একটি ধারক। অ্যারের আকার (উপাদানের সংখ্যা) অ্যারের ঘোষণার সময় স্থির করা হয়৷

অ্যারে ঘূর্ণন - একটি অ্যারে ঘোরানো অ্যারের উপাদানগুলির ক্রম পরিবর্তন করছে। এলিমেন্টের সূচীকে এক করে বাড়ানো এবং শেষ উপাদানের সূচককে 0 এ পরিবর্তন করা।

অ্যারে রোটেশনের উদাহরণ,

Array[] = {3, 6, 8,1, 4, 10}
Rotated 2 times gives,
Array[] = {4, 10, 3, 6, 8, 1, 4}

রিভার্সাল অ্যালগরিদম

অ্যারে রোটেশনের জন্য একটি অ্যালগরিদম হল রিভার্সাল অ্যালগরিদম। এই অ্যালগরিদমে, অ্যারের ঘূর্ণন সঞ্চালনের জন্য সাব্যারে তৈরি এবং বিপরীত করা হয়। সাবাররেগুলি তৈরি করা হয়, পৃথকভাবে ঘোরানো হয় এবং তারপরে একত্রে যোগ দেওয়া হয় এবং ঘোরানো অ্যারে পাওয়ার জন্য ফিরে আসে৷

অ্যালগরিদম

Input : array arr[] , positions that are needed to be rotated r , length of array n.
Step 1: Split the array into two sub arrays of 0 - (d-1) and d - (n-1) size, a1 [d] and a2[n-d];
Step 2: Reverse both arrays using the reverse method.
Step 3: Join a1 and a2 back to get an array of original size.
Step 4: Reverse this joined array to get the rotated array.
Step 5: Print the array using the standard output method.

উদাহরণ,

arr[] = {1 ,4, 2, 8, 3, 6, 5}, d = 3, n = 7
a1[]  = {1,4,2} ; a2 = {8,3,6,5}
a1r[] = {2,4,1} // reversed a1
a2r[] = {5,6,3,8} // reversed a2
ar[]  = {2,4,1,5,6,3,8} // a1r+a2r
arr[] = {8,3,6,5,1,4,2} // final answer.

উদাহরণ

#include <stdio.h>
void reverse(int arr[], int start, int end){
   int temp;
   while (start < end) {
      temp = arr[start];
      arr[start] = arr[end];
      arr[end] = temp;
      start++;
      end--;
   }
}
int main(){
   int arr[] = { 54, 67, 12, 76, 25, 16, 34 };
   int n = 7;
   int d = 2;
   printf("The initial array is :\n");
   for (int i = 0; i < n; i++)
      printf("%d ", arr[i]);
   reverse(arr, 0, d - 1);
   reverse(arr, d, n - 1);
   reverse(arr, 0, n - 1);
   printf("\nThe left reversed array by %d elements is:\n",d);
   for (int i = 0; i < n; i++)
      printf("%d ", arr[i]);
   return 0;
}

আউটপুট

The initial array is :
54 67 12 76 25 16 34
The left reversed array by 2 elements is:
12 76 25 16 34 54 67

  1. সর্বোত্তম পৃষ্ঠা প্রতিস্থাপন অ্যালগরিদমের জন্য C++ প্রোগ্রাম

  2. অ্যারের উপাদানগুলির গুণনের জন্য C++ প্রোগ্রাম

  3. গণনা সাজানোর জন্য পাইথন প্রোগ্রাম

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