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

C++ में सॉर्टेड फॉर्म में ऐरे के आसन्न एलिमेंट्स का अधिकतम अंतर


हमें एक ऐरे दिया गया है। ऐरे को सॉर्ट करने की आवश्यकता नहीं है। कार्य उस ऐरे के सॉर्टेड फॉर्म में आसन्न एलिमेंट्स के बीच अधिकतम अंतर ढूंढना है। इसलिए पहली बात यह है कि ऐरे को बढ़ते या घटते क्रम में सॉर्ट करें। फिर हम ऐरे को पार करेंगे और 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

  1. - C++ में क्रमबद्ध सरणी में AP बनाने वाले सभी ट्रिपलेट प्रिंट करें

    इस समस्या में, हमें संख्याओं की एक क्रमबद्ध सरणी दी गई है और हमें उन ट्रिपलेट को ढूंढना है जो अंकगणितीय प्रगति (AP) के रूप में हैं। एक अंकगणितीय प्रगति संख्याओं की एक श्रृंखला है जिसमें लगातार पदों के बीच का अंतर समान होता है। समस्या को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं - इनपुट: सरणी = {2

  1. - C++ में सॉर्टेड और रोटेटेड ऐरे में अधिकतम तत्व

    विवरण अलग-अलग तत्वों का एक सॉर्टेड ऐरे दिया गया है जो किसी अज्ञात बिंदु पर रोटेटेड है, कार्य इसमें अधिकतम तत्व ढूंढना है। उदाहरण यदि इनपुट ऐरे {30, 40, 50, 10, 20} है तो अधिकतम तत्व 50 है। एल्गोरिदम अधिकतम तत्व वह एकमात्र तत्व है जिसका अगला तत्व उससे छोटा है। यदि कोई अगला छोटा तत्व नहीं है, तो कोई

  1. - C++ प्रोग्राम: सॉर्टेड ऐरे कार्यान्वयन (सिलेक्शन सॉर्ट)

    सॉर्टेड ऐरे ऐरे जिसमें तत्व क्रमबद्ध क्रम में हों (संख्यात्मक, वर्णानुक्रमिक, आदि)। कई सॉर्टिंग एल्गोरिदम: बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज सॉर्ट, क्विक सॉर्ट, हीप सॉर्ट। सिलेक्शन सॉर्ट अनसॉर्टेड भाग में सबसे छोटा तत्व ढूंढकर उसे शुरुआत से स्वैप करता है। O(n²) समय जटिलता। C++ प्रोग