Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ का उपयोग करके ऐरे रोटेशन के लिए रिवर्सल एल्गोरिदम

दी गई समस्या में, हमें एक सरणी दी गई है, और हमें एक उलट एल्गोरिथम का उपयोग करके d तत्वों द्वारा सरणी को घुमाने की आवश्यकता है, उदाहरण के लिए -

Input : arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2
Output : arr[] = [3, 4, 5, 6, 7, 1, 2]
Explanation : As you can see we have to rotate this array by d = 2 but our main task is to achieve this by using a reversal technique.

हम उत्क्रमण तकनीक द्वारा सरणी के घूर्णन के लिए कुछ गणना करते हैं, और हम यह निष्कर्ष निकालते हैं कि -

  • सबसे पहले, हम सरणी के पहले d तत्वों को उलट देते हैं।
  • दूसरा, हम शेष तत्वों को उलट देते हैं।
  • तीसरा, हम पूरे ऐरे को उलट देते हैं।

और इन तीन चरणों को लागू करके, हम अपने घुमाए गए सरणी को प्राप्त कर सकते हैं।

समाधान खोजने के लिए दृष्टिकोण

इस समस्या में, सबसे पहले, हम तत्वों को उलटने के लिए एक फ़ंक्शन बनाने जा रहे हैं; अब हम ऊपर दिए गए चरणों का पालन करते हैं

उदाहरण

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

void reverseArray(int arr[], int start, int end) { // our reversal algorithm
   while (start < end) { // if start becomes equal to end we break the loop
      int temp = arr[start];
      arr[start] = arr[end];
      arr[end] = temp;
      start++;
      end--;
   }
   return ;
}
void Rotate(int arr[], int d, int n) { // rotation function
   if (d == 0) // no rotation required
      return;
   d = d % n; // when d becomes equal to n so our array comes to its original form
   reverseArray(arr, 0, d - 1); // reversing first d elements
   reverseArray(arr, d, n - 1); // reversing the remaining elements
   reverseArray(arr, 0, n - 1); // reversing the whole array

   return ;
}
int main() {
   int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; // given array
   int n = sizeof(arr) / sizeof(arr[0]); // size of our array
   int d = 2;
   Rotate(arr, d, n);
   for(int i = 0; i < n; i++) // printing the array
      cout << arr[i] << " ";
   cout << "\n";
   return 0;
}

आउटपुट

3 4 5 6 7 1 2

उपरोक्त कोड की व्याख्या

उपरोक्त दृष्टिकोण में, हम पहले अपनी उत्क्रमण तकनीक बनाते हैं, जो तीन पैरामीटर, यानी, सरणी, प्रारंभिक अनुक्रमणिका, और समाप्ति अनुक्रमणिका लेगी, और हमारे सरणी को प्रारंभ से अंत तक उलट देगी। जैसा कि हमने पहले अपना एल्गोरिदम विकसित किया था, हम इस फ़ंक्शन का उपयोग करके उस एल्गोरिदम को लागू करने जा रहे हैं। हम सबसे पहले पहले d तत्वों को उलटते हैं। अब दूसरी बात, हम शेष तत्वों को उलट देते हैं, और अंत में, हम पूरे सरणी को उलट देते हैं। नतीजतन, हमारे सरणी को d द्वारा घुमाया जाता है। रोटेट फंक्शन में, हम d =d% n बना रहे हैं। ऐसा इसलिए है क्योंकि यदि हम किसी सरणी के पहले n तत्वों को घुमाते हैं, तो हमें जो उत्तर मिलता है वह पहले जैसा ही होगा, इसलिए हम n के साथ d का एक मॉड बनाते हैं।

निष्कर्ष

इस लेख में, हम सरणी रोटेशन के लिए उत्क्रमण एल्गोरिथ्म को लागू करने के लिए एक समस्या का समाधान करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और संपूर्ण दृष्टिकोण (Normal) भी सीखा जिसके द्वारा हमने इस समस्या को हल किया। हम उसी प्रोग्राम को अन्य भाषाओं जैसे सी, जावा, पायथन और अन्य भाषाओं में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।


  1. सी प्रोग्राम फॉर रिवर्सल एल्गोरिथम फॉर एरे रोटेशन

    एक एल्गोरिदम निर्देशों का एक समूह है जो दी गई समस्या को हल करने के लिए किया जाता है। यहां, हम ऐरे रोटेशन के लिए रिवर्सल एल्गोरिथम पर चर्चा करेंगे और रिवर्सल एल्गोरिथम के लिए एक प्रोग्राम बनाएंगे। अब, आइए कुछ शर्तों पर आते हैं जिन्हें इस समस्या को हल करने के लिए हमें जानना आवश्यक है - सरणी - समान ड

  1. सरणी रोटेशन के लिए कार्यक्रम के लिए सी कार्यक्रम?

    किसी सरणी को n स्थिति से बाएँ घुमाने के लिए C प्रोग्राम लिखें। सी प्रोग्रामिंग में बाएं घुमाने के लिए सरणी को n बार कैसे घुमाएं। C प्रोग्राम में किसी सरणी को n स्थिति से बाईं ओर घुमाने के लिए तर्क। Input: arr[]=1 2 3 4 5 6 7 8 9 10 N=3 Output: 4 5 6 7 8 9 10 1 2 3 स्पष्टीकरण किसी सरणी में तत्वो

  1. सरणी रोटेशन के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - एक टेक्स्ट और एक पैटर्न को देखते हुए, हमें टेक्स्ट में पैटर्न और उसके क्रमपरिवर्तन (या विपर्यय) की सभी घटनाओं को प्रिंट करना होगा। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # maximum value MAX = 300 #