यह प्रोग्राम दिए गए एरे के न्यूनतम निरपेक्ष अंतर को खोजने के लिए है जहां हमारे पास एक एरे है जिसमें विशिष्ट तत्व हैं। इस अवधारणा को बेहतर ढंग से सीखने के लिए, आइए आवश्यक चीजों को दोहराएं:
एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। एरे की लंबाई पूर्वनिर्धारित होनी चाहिए।
निरपेक्ष अंतर (Absolute difference) दो संख्याओं के अंतर का निरपेक्ष मान है यानी अंतर हमेशा धनात्मक होगा, ऋणात्मक मान धनात्मक में बदल जाएंगे।
प्रत्येक तत्व के न्यूनतम निरपेक्ष अंतर के योग को न्यूनतम निरपेक्ष अंतर सूत्र का उपयोग करके खोजना होगा:
न्यूनतम निरपेक्ष अंतर (a) = min(abs(a – arr[j]));
जहां 1 ≤ j ≤ n और j != i, abs निरपेक्ष मान है।
इनपुट: arr = {1, 3, 9, 3, 6} आउटपुट: 8
व्याख्या
इष्टतम समाधान x = 3 चुनना है, जो योग उत्पन्न करता है
|1 – 3| + |3 – 3| + |9 – 3| + |3 – 3| = 2 + 0 + 6 + 0 = 8
एल्गोरिदम
दिए गए इनपुट एरे को सॉर्ट किया जाता है।
एरे के पहले तत्व के लिए न्यूनतम निरपेक्ष अंतर, दूसरे एरे तत्व का उपयोग करके गणना की जाती है।
अंतिम एरे तत्व के लिए न्यूनतम निरपेक्ष अंतर, अंतिम से दूसरे एरे तत्व का उपयोग करके गणना की जाती है।
इंडेक्स i पर मौजूद अन्य एरे तत्वों के लिए न्यूनतम निरपेक्ष अंतर की गणना द्वारा की जाती है:
minAbsDiff = min( abs(arr[i] – arr[i-1]), abs(arr[i] – arr[i+1]) )।
उदाहरण
#include <iostream>
#include <algorithm>
using namespace std;
int abs_sum(int a[], int len);
int main() {
int a[] = {1, 3, 9, 3, 6};
int n, i;
n = 5;
sort(a, a + n);
int sum = 0;
sum += abs(a[0] - a[1]);
sum += abs(a[n-1] - a[n-2]);
for (int i = 1; i < n-1; i++) {
sum += min(abs(a[i] - a[i-1]), abs(a[i] - a[i+1]));
}
cout << "The element with minimum sum of absolute differences is : " << sum;
return 0;
}
आउटपुट
The element with minimum sum of absolute differences is : 8