एक एल्गोरिदम निर्देशों का एक समूह है जो दी गई समस्या को हल करने के लिए किया जाता है। यहां, हम ऐरे रोटेशन के लिए रिवर्सल एल्गोरिथम पर चर्चा करेंगे और रिवर्सल एल्गोरिथम के लिए एक प्रोग्राम बनाएंगे।
अब, आइए कुछ शर्तों पर आते हैं जिन्हें इस समस्या को हल करने के लिए हमें जानना आवश्यक है -
सरणी - समान डेटा प्रकार के तत्वों का एक कंटेनर। सरणी का आकार (तत्वों की संख्या) सरणी की घोषणा के समय तय किया जाता है।
सरणी रोटेशन - किसी सरणी को घुमाने से सरणी के तत्वों का क्रम बदल रहा है। तत्व के सूचकांक को एक से बढ़ाकर और अंतिम तत्व के सूचकांक को 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