हमें एक ऐरे दिया गया है। ऐरे को सॉर्ट करने की आवश्यकता नहीं है। कार्य उस ऐरे के सॉर्टेड फॉर्म में आसन्न एलिमेंट्स के बीच अधिकतम अंतर ढूंढना है। इसलिए पहली बात यह है कि ऐरे को बढ़ते या घटते क्रम में सॉर्ट करें। फिर हम ऐरे को पार करेंगे और Arr[i+1] - Arr[i] का आसन्न अंतर निकालेंगे। फिर प्रत्येक पुनरावृत्ति के लिए हम इस अंतर की तुलना अब तक मिले अधिकतम अंतर से करेंगे।
इनपुट - Arr[] = [1, 5, 10, 2, 7]
आउटपुट - सॉर्टेड फॉर्म में ऐरे में आसन्न एलिमेंट्स का अधिकतम अंतर 3 है।
व्याख्या - बढ़ते क्रम में सॉर्ट किया गया Arr[] = [1, 2, 5, 7, 10]। तो आसन्न अंतर इस प्रकार हैं:
Arr[1]-Arr[0]=1, Maximum Difference=1 Arr[2]-Arr[1]=3, Maximum Difference=3 Arr[3]-Arr[2]=2, Maximum Difference=3 Arr[4]-Arr[3]=3, Maximum Difference=3
इनपुट - Arr[] = [5, 11, 21, 15, 20]
आउटपुट - सॉर्टेड फॉर्म में ऐरे में आसन्न एलिमेंट्स का अधिकतम अंतर 6 है।
व्याख्या - बढ़ते क्रम में सॉर्ट किया गया Arr[] = [5, 11, 15, 20, 21]। तो आसन्न अंतर इस प्रकार हैं:
Arr[1]-Arr[0]=6, Maximum Difference=6 Arr[2]-Arr[1]=4, Maximum Difference=6 Arr[3]-Arr[2]=5, Maximum Difference=6 Arr[4]-Arr[3]=1, Maximum Difference=6
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
- एक पूर्णांक ऐरे Arr[] इनपुट करें।
- ऐरे को बढ़ते क्रम में सॉर्ट करें। (यहां सॉर्टिंग क्रम मायने नहीं रखता)
- एक वेरिएबल घोषित करें, मान लें MaxD, जो अब तक मिले आसन्न एलिमेंट्स के बीच अधिकतम अंतर को संग्रहीत करेगा। इसका प्रारंभिक मान Arr[1] - Arr[0] लें।
- दूसरे एलिमेंट से ऐरे के अंतिम एलिमेंट इंडेक्स तक लूप शुरू करें।
- यदि Arr[i+1] - Arr[i] > MaxD के बीच गणना किया गया अंतर है, तो MaxD अपडेट करें।
- इसे तब तक जारी रखें जब तक हम सेकंड लास्ट एलिमेंट इंडेक्स तक नहीं पहुंच जाते।
- परिणाम MaxD को अधिकतम आसन्न एलिमेंट अंतर के रूप में प्रिंट करें।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int max_adj_Diff(int A[], int size) {
sort(A, A + size); // ऐरे को बढ़ते क्रम में सॉर्ट करें
int MaxD = A[1] - A[0];
for (int i = 1; i < size - 1; i++) {
if (A[i + 1] - A[i] > MaxD)
MaxD = A[i + 1] - A[i];
}
return MaxD;
}
int main() {
int Arr[] = {1, 5, 2, 18, 20, 13};
int md = max_adj_Diff(Arr, 6);
cout << "Maximum adjacent difference in array in its sorted form: " << md;
return 0;
}
आउटपुट
Maximum adjacent difference in array in its sorted form: 8