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

किसी सरणी में विशिष्ट मान खोजने के लिए C++ प्रोग्राम

मान लीजिए कि हमें एक सरणी 'गिरफ्तारी' दी गई है जिसमें क्रमबद्ध पूर्णांक मानों की संख्या है। हमें आकार q की एक सरणी 'क्वेरी' भी दी गई है, और हमें यह बताना होगा कि 'क्वेरी' में मान दिए गए सरणी 'arr' में मौजूद हैं या नहीं। यदि क्वेरी में कोई मान गिरफ्तारी में मौजूद है, तो हम उस स्थिति के साथ "वर्तमान" प्रिंट करते हैं जहां मान स्थित है। अन्यथा, हम "मौजूद नहीं" प्रिंट करते हैं और गिरफ्तारी में स्थिति प्रिंट करते हैं, जहां न्यूनतम मान मान से अधिक होता है क्वेरी स्थित है। हमें याद रखना होगा कि सरणियाँ 1-अनुक्रमित हैं।

इसलिए, यदि इनपुट n =8, arr ={1, 2, 3, 4, 7, 9, 12, 15}, q =3, क्वेरी ={1, 5, 8} जैसा है, तो आउटपुट होगा

Present 1
Not present 5
Not present 6

प्रश्नों का पहला मान गिरफ्तारी में स्थिति 1 में मौजूद है।

प्रश्नों का दूसरा मान गिरफ्तारी में मौजूद नहीं है। वह स्थिति जहां क्वेरी में मान से कम से कम मान 5 है.

इसी तरह, क्वेश्चन का तीसरा मान भी एरर में मौजूद नहीं है। जो मान इससे बड़ा है वह गिरफ्तारी की स्थिति 6 में है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • सरणी मान परिभाषित करें
  • इनिशियलाइज़ i :=0 के लिए, जब i करें
  • मानों के अंत में arr[i] डालें
  • इनिशियलाइज़ i :=0 के लिए, जब i करें
  • idx :=(मानों में पहले तत्व की स्थिति जो क्वेरी से कम नहीं है[i]) - मानों में प्रथम तत्व की स्थिति
  • यदि मान [idx] क्वेरी [i] के समान है, तो −
    • प्रिंट ("वर्तमान")
  • अन्यथा,
    • प्रिंट ("मौजूद नहीं")
  • प्रिंट (idx + 1)
  • उदाहरण

    आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    #include <vector>
    #include <iostream>
    using namespace std;
    
    void solve(int n, int arr[], int q, int query[]) {
       vector<int> values;
       for(int i = 0; i < n; i++){
          values.push_back(arr[i]);
       }
       for(int i = 0; i < q; i++) {
          int idx = lower_bound (values.begin(), values.end(),
          query[i]) - values.begin();
          if (values[idx] == query[i])
             cout << "Present ";
          else
             cout << "Not present ";
          cout << idx + 1 << endl;
       }
    }
    int main() {
       int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15};
       int query_arr[] = {1, 5, 8};
       solve(8, input_arr, 3, query_arr);
       return 0;
    }

    इनपुट(stdin)

    int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15};
    int query_arr[] = {1, 5, 8};
    solve(8, input_arr, 3, query_arr);

    आउटपुट

    Present 1
    Not present 5
    Not present 6

    1. C++ में किसी सरणी की बिटनोसिटी की जांच करने का कार्यक्रम

      एन पूर्णांकों की एक सरणी गिरफ्तारी [एन] को देखते हुए, कार्य यह जांचना है कि दिया गया सरणी बिटोनिक है या नहीं। यदि दी गई सरणी बिटोनिक है तो हां यह एक बिटोनिक सरणी है प्रिंट करें, अन्यथा प्रिंट करें नहीं यह एक बिटोनिक सरणी नहीं है। एक बिटोनिक सरणी तब होती है जब सरणी पहले सख्ती से बढ़ते क्रम में होती

    1. C++ में सरणी में मौजूद कुंजी K की प्रायिकता

      आकार एन की एक सरणी के साथ दिया गया है और कार्य किसी सरणी में उपलब्ध होने पर दिए गए तत्व k की संभावना को खोजना है। संपूर्ण सरणी को n तक पार करें जो किसी सरणी में तत्वों की संख्या के बराबर है और दिए गए तत्व या कुंजी k की खोज करें। यदि तत्व किसी सरणी में मौजूद है तो इसकी संभावना की गणना करें अन्यथा 0

    1. सी ++ प्रोग्राम में बाइनरी सर्च?

      द्विआधारी खोज, जिसे अर्ध-अंतराल खोज, लॉगरिदमिक खोज या बाइनरी चॉप के रूप में भी जाना जाता है, एक खोज एल्गोरिथ्म है जो एक क्रमबद्ध सरणी के भीतर लक्ष्य मान की स्थिति का पता लगाता है। बाइनरी खोज लक्ष्य मान की तुलना सरणी के मध्य तत्व से करती है। यदि वे समान नहीं हैं, तो आधा जिसमें लक्ष्य झूठ नहीं बोल सकत