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

डिएप्स (Deaps) में तत्व डालना


डिएप में सम्मिलन एल्गोरिदम

डिएप में एक नया तत्व डालने के लिए, हमें यह निर्धारित करना होगा कि यह मिन-हीप (लेफ्ट सबट्री) या मैक्स-हीप (राइट सबट्री) से संबंधित है, और फिर हीप गुण और क्रॉस-सबट्री कॉरेस्पॉन्डेंस को बनाए रखना होगा।

सहायक फ़ंक्शन्स: कॉरेस्पॉन्डिंग इंडेक्स गणना

// मिन-हीप में इंडेक्स m के लिए कॉरेस्पॉन्डिंग मैक्स-हीप इंडेक्स
Procedure min_value(m):
    return m - 2^{floor(log2(m-1))};

// मैक्स-हीप में इंडेक्स m के लिए कॉरेस्पॉन्डिंग मिन-हीप इंडेक्स
Procedure max_value(m):
    return m + 2^{floor(log2(m-1))};

सम्मिलन प्रक्रिया

Procedure deap_insertion(b[], y, m):
    if (m == 1)                  // पहला तत्व
        b[2] = y;
    else {
        if (m is in maximum subtree) {  // नया नोड मैक्स-हीप में जा रहा है
            index = min_value(m);       // कॉरेस्पॉन्डिंग मिन-हीप नोड
            if (y < b[index]) {         // मिन-हीप गुण का उल्लंघन?
                b[m] = b[index];        // मिन मान को मैक्स पोजीशन पर ले जाएं
                insert y in minimum subtree; // y को मिन-हीप में डालें
            } else {
                insert y in maximum subtree; // सीधे मैक्स-हीप में डालें
            }
        } else {                        // नया नोड मिन-हीप में जा रहा है
            index = max_value(m);       // कॉरेस्पॉन्डिंग मैक्स-हीप नोड
            if (y > b[index]) {         // मैक्स-हीप गुण का उल्लंघन?
                b[m] = b[index];        // मैक्स मान को मिन पोजीशन पर ले जाएं
                insert y into maximum subtree;
            } else {
                insert y into minimum subtree;
            }
        }
    }

चरण-दर-चरण तर्क

  1. निर्धारित करें कि नई पोजीशन `m` मिन या मैक्स सबट्री में है।
  2. दूसरी सबट्री में कॉरेस्पॉन्डिंग नोड ढूंढें (`min_value` या `max_value` का उपयोग करके)।
  3. नए मान `y` की तुलना कॉरेस्पॉन्डिंग नोड के मान से करें।
  4. यदि क्रॉस-सबट्री ऑर्डरिंग गुण (`min ≤ max`) का उल्लंघन होता है, तो कॉरेस्पॉन्डिंग मान को नई पोजीशन पर स्वैप करें और `y` को दूसरी सबट्री में डालें।
  5. अन्यथा, `y` को वर्तमान सबट्री में सामान्य हीप सम्मिलन (बबल-अप) द्वारा डालें।

जटिलता

  • समय: O(log n) - ट्री की ऊंचाई के समानुपाती।
  • स्पेस: O(1) अतिरिक्त।
  1. Java में PreparedStatement का उपयोग करके MySQL टेबल में रिकॉर्ड कैसे डालें? Java में PreparedStatement का उपयोग करके MySQL टेबल में रिकॉर्ड कैसे डालें?

    PreparedStatement के साथ पैरामीटराइज़्ड INSERT SQL इंजेक्शन रोकने और प्रदर्शन में सुधार के लिए Java में PreparedStatement का उपयोग करें। प्लेसहोल्डर (?) के साथ SQL लिखें और सेटर मेथड्स से मान बांधें। सिंटैक्स String query = INSERT INTO yourTableName(col1, col2, col3) VALUES (?, ?, ?); PreparedStat

  1. डेटा संरचना में डिएप्स (Deaps): परिभाषा और गुण डेटा संरचना में डिएप्स (Deaps): परिभाषा और गुण

    डिएप (Deap) परिभाषा एक **डिएप** (डबल-एंडेड हीप) एक विशेष बाइनरी ट्री-आधारित डेटा संरचना है जिसमें निम्नलिखित गुण होते हैं: खाली रूट: रूट नोड (इंडेक्स 1) में कोई तत्व/की मान नहीं होता; यह खाली होता है। लेफ्ट सबट्री = मिन-हीप: रूट का लेफ्ट सबट्री एक मानक मिन-हीप होता है। राइट सबट्री = मैक्स-हीप: रू

  1. Python प्रोग्राम से क्रमबद्ध सूची में तत्व डालना Python प्रोग्राम से क्रमबद्ध सूची में तत्व डालना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें क्रमबद्ध क्रम को बदले बिना सूची में एक तत्व डालने की आवश्यकता है। नीचे चर्चा किए गए दो दृष्टिकोण हैं। दृष्टिकोण 1: ब्रूट-फोर्स विधि उदाहरण n: index = i break