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

C++ प्रोग्राम: बाइनरी सर्च दृष्टिकोण से दो सॉर्टेड एरे की माध्यिका खोजें

एल्गोरिदम

दोनों सॉर्टेड एरे और उनके प्रारंभ और अंत इंडेक्स के साथ median() फ़ंक्शन बनाएं। पहले एरे की लंबाई की गणना करें (e1 - s1)। यदि लंबाई 1 या 2 है, तो सम या विषम लंबाई के अनुसार माध्यिका की गणना करें और परिणाम प्रिंट करें। जांचें कि क्या दोनों व्यक्तिगत माध्यिकाएं समान हैं, यदि हां तो परिणाम प्रिंट करें। यदि m1 > m2 तो संयुक्त माध्यिका या तो पहले एरे के पहले आधे में या दूसरे एरे के दूसरे आधे में होगी। यदि m1 < m2 तो संयुक्त माध्यिका या तो पहले एरे के दूसरे आधे में या दूसरे एरे के पहले आधे में होगी। अद्यतन प्रारंभ और अंत इंडेक्स के साथ median() को पुनरावर्ती रूप से कॉल करें।

उदाहरण कोड

#include <iostream>
using namespace std;

void median(float a1[], int s1, int e1, float a2[], int s2, int e2) {
    float m1, m2;
    if ((e1 - s1 + 1) % 2 == 0) {
        if (e1 - s1 == 1) {
            m1 = ((a1[s1] < a2[s2] ? a1[s1] : a2[s2]) + (a1[e1] > a2[e2] ? a1[e1] : a2[e2])) / 2;
            cout << m1;
            return;
        }
        m1 = (a1[(e1 + s1) / 2] + a1[(e1 + s1) / 2 + 1]) / 2;
        m2 = (a2[(e2 + s2) / 2] + a2[(e2 + s2) / 2 + 1]) / 2;
        if (m1 == m2) {
            cout << m1;
            return;
        } else {
            if (m1 > m2)
                median(a1, s1, (e1 + s1) / 2 + 1, a2, (e2 + s2) / 2, e2);
            else
                median(a1, (e1 + s1) / 2, e1, a2, s2, (e2 + s2) / 2 + 1);
        }
    } else {
        if (e1 - s1 == 0) {
            m1 = (a1[s1] + a2[s2]) / 2;
            cout << m1;
            return;
        }
        m1 = a1[(e1 + s1) / 2];
        m2 = a2[(e2 + s2) / 2];
        if (m1 == m2) {
            cout << m1;
            return;
        } else {
            if (m1 > m2)
                median(a1, s1, (e1 + s1) / 2, a2, (e2 + s2) / 2, e2);
            else
                median(a1, (e1 + s1) / 2, e1, a2, s2, (e2 + s2) / 2);
        }
    }
    return;
}

int main() {
    int n1, n2, i;
    cout << "\nपहले एरे के लिए तत्वों की संख्या दर्ज करें: ";
    cin >> n1;
    float a1[n1];
    for (i = 0; i < n1; i++) {
        cout << "पहले एरे के लिए तत्व " << i+1 << ": ";
        cin >> a1[i];
    }
    cout << "\nदूसरे एरे के लिए तत्वों की संख्या दर्ज करें: ";
    cin >> n2;
    float a2[n2];
    for (i = 0; i < n2; i++) {
        cout << "दूसरे एरे के लिए तत्व " << i+1 << ": ";
        cin >> a2[i];
    }
    cout << "माध्यिका है ";
    median(a1, 0, n1-1, a2, 0, n2-1);
    return 0;
}

आउटपुट

पहले एरे के लिए तत्वों की संख्या दर्ज करें: 5
पहले एरे के लिए तत्व 1: 6
पहले एरे के लिए तत्व 2: 7
पहले एरे के लिए तत्व 3: 9
पहले एरे के लिए तत्व 4: 10
पहले एरे के लिए तत्व 5: 11
दूसरे एरे के लिए तत्वों की संख्या दर्ज करें: 5
दूसरे एरे के लिए तत्व 1: 60
दूसरे एरे के लिए तत्व 2: 70
दूसरे एरे के लिए तत्व 3: 90
दूसरे एरे के लिए तत्व 4: 100
दूसरे एरे के लिए तत्व 5: 110
माध्यिका है 35
  1. C++ का उपयोग करके एलिप्स का क्षेत्रफल ज्ञात करना C++ का उपयोग करके एलिप्स का क्षेत्रफल ज्ञात करना

    यहां हम देखेंगे कि C++ का उपयोग करके एलिप्स का क्षेत्रफल कैसे प्राप्त किया जाए। एलिप्स के विभिन्न भाग होते हैं। ये नीचे दिए गए हैं।मुख्य बिंदुविवरणसेंटरएलिप्स का केंद्र। यह उन लाइन सेगमेंट्स का भी केंद्र है जो दो फोकी को जोड़ते हैं।मेजर एक्सिसएलिप्स का सबसे लंबा व्यासnmembयह एलिमेंट्स की संख्या है,

  1. - बाइनरी सर्च का उपयोग करके सरणी में अधिकतम एलिमेंट खोजने के लिए C++ प्रोग्राम

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

  1. - लिनियर सर्च का उपयोग करके सरणी में न्यूनतम एलिमेंट खोजने के लिए C++ प्रोग्राम

    यह लिनियर सर्च दृष्टिकोण का उपयोग करके सरणी के न्यूनतम एलिमेंट को खोजने के लिए एक C++ प्रोग्राम है। इस प्रोग्राम की समय जटिलता O(n) है। एल्गोरिदम शुरुआत डेटा एलिमेंट को सरणी में निर्दिष्ट करें। 0 इंडेक्स पर मान को न्यूनतम वेरिएबल में निर्दिष्ट करें। न्यूनतम की तुलना अन्य डेटा एलिमेंट्स से क्रमिक रूप