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

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

इस लेख में, हम किसी दिए गए सरणी को k- तत्वों द्वारा दाईं ओर घुमाने के लिए उत्क्रमण एल्गोरिथ्म को समझेंगे, उदाहरण के लिए -

Input : arr[ ] = { 4, 6, 2, 6, 43, 7, 3, 7 }, k = 4
Output : { 43, 7, 3, 7, 4, 6, 2, 6 }
Explanation : Rotating each element of array by 4-element to the right gives { 43, 7, 3, 7, 4, 6, 2, 6 }.

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

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

आप प्रत्येक तत्व को दाईं ओर स्थानांतरित करके और इस प्रक्रिया को k-बार दोहराकर इस समस्या को आसानी से हल कर सकते हैं। लेकिन इसमें अधिक समय लगेगा क्योंकि इसकी समय जटिलता O(k * N) होगी।

उत्क्रमण एल्गोरिथम:उत्क्रमण एक सरणी को उलट देता है, और एक सरणी को घुमाने के लिए कुछ तत्व श्रेणी को उलट कर किया जा सकता है। इस एल्गोरिथम के अनुसार -

  • सबसे पहले, पूरी सरणी को उलट दें।
  • k को N (सरणी आकार) के साथ k के मापांक के साथ संशोधित करें क्योंकि k, N से बड़ा है।
  • सरणी के पहले k तत्वों को क्रम में लाने के लिए उलट दें।
  • फिर शेष तत्वों की श्रेणी को उलट दें, यानी k से N-1 तक।

उदाहरण

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

void reverse(int nums[], int start,int end) {
   int temp=0;
   // reversing array with swapping start element with end element.
   while(start<=end){
      temp=nums[end];
      nums[end]=nums[start];
      nums[start]=temp;
      start++;
      end--;
   }
}

int main() {
   int arr[] = {4, 6, 2, 6, 43, 7, 3, 6, 2, 4, 5 };

   int N = sizeof(arr)/sizeof(arr[0]);

   int k = 4;
   // reversing whole array
   reverse(arr, 0, N-1);
   k = k%N;
   // reversing element range of 0 to k-1.

   reverse(arr, 0, k-1);
   // reversing element range of k to last element.
   reverse(arr, k, N-1);
   cout << "Array after rotating by k-elements : ";
   for(int i = 0;i<N;i++)
      cout << arr[i] << " ";
   return 0;
}

आउटपुट

Array after rotating by k-elements : 6 2 4 5 4 6 2 6 43 7 3

निष्कर्ष

इस लेख में हमने रिवर्सल एल्गोरिथम का उपयोग करके के-तत्वों द्वारा एक सरणी के सही रोटेशन की समस्या पर चर्चा की। हमने चर्चा की कि रिवर्सल एल्गोरिदम क्या है और इस समस्या को हल करने के लिए इसे कैसे लागू किया जा सकता है। हमने इस समस्या को हल करने के लिए C++ कोड पर भी चर्चा की। हम इस कोड को किसी अन्य भाषा जैसे C, Java, Python, आदि में लिख सकते हैं। आशा है कि आपको यह लेख मददगार लगा होगा।


  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 #