एक एल्गोरिदम निर्देशों का एक समूह होता है जिसे दी गई समस्या को हल करने के लिए क्रम में निष्पादित किया जाता है। यहां, हम ऐरे रोटेशन के लिए रिवर्सल एल्गोरिदम पर चर्चा करेंगे और इसके लिए एक प्रोग्राम बनाएंगे।
आइए उन शर्तों को जानें जिन्हें इस समस्या को हल करने के लिए जानना आवश्यक है:
ऐरे − एक ही डेटा टाइप के तत्वों का एक कंटेनर। ऐरे का आकार (तत्वों की संख्या) ऐरे की घोषणा के समय तय होता है।
ऐरे रोटेशन − ऐरे को घुमाने का अर्थ है ऐरे के तत्वों के क्रम को बदलना। तत्व के इंडेक्स को एक से बढ़ाना और अंतिम तत्व के इंडेक्स को 0 में बदलना, और इसी तरह।
ऐरे रोटेशन का उदाहरण,
Array[] = {3, 6, 8, 1, 4, 10}
2 बार घुमाने पर,
Array[] = {1, 4, 10, 3, 6, 8}
रिवर्सल एल्गोरिदम
ऐरे रोटेशन के एल्गोरिदम में से एक रिवर्सल एल्गोरिदम है। इस एल्गोरिदम में, सबऐरे बनाए जाते हैं और ऐरे के रोटेशन को करने के लिए उलटे किए जाते हैं। सबऐरे बनाए जाते हैं, व्यक्तिगत रूप से घुमाए जाते हैं और फिर एक साथ जोड़कर और वापस उलट कर घुमाया हुआ ऐरे प्राप्त किया जाता है।
एल्गोरिदम
इनपुट: ऐरे arr[], घुमाने के लिए पोजीशन r, ऐरे की लंबाई n। चरण 1: ऐरे को 0-(d-1) और d-(n-1) आकार के दो सब ऐरे में विभाजित करें, a1[d] और a2[n-d]; चरण 2: रिवर्स मेथड का उपयोग करके दोनों ऐरे को उलटें। चरण 3: मूल आकार का ऐरे प्राप्त करने के लिए a1 और a2 को वापस जोड़ें। चरण 4: इस जुड़े हुए ऐरे को उलट कर घुमाया हुआ ऐरे प्राप्त करें। चरण 5: मानक आउटपुट मेथड का उपयोग करके ऐरे प्रिंट करें।
उदाहरण,
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} // उलटा a1
a2r[] = {5,6,3,8} // उलटा a2
ar[] = {2,4,1,5,6,3,8} // a1r+a2r
arr[] = {8,3,6,5,1,4,2} // अंतिम उत्तर।
उदाहरण
#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