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

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


मान लीजिए हमें एक सरणी 'arr' दी गई है जिसमें n क्रमबद्ध पूर्णांक मान हैं। हमें एक सरणी 'query' भी दी गई है जिसका आकार q है, और हमें बताना है कि 'query' में मान दिए गए सरणी 'arr' में मौजूद हैं या नहीं। यदि query में कोई मान arr में मौजूद है, तो हम "Present" प्रिंट करते हैं साथ ही वह स्थिति जहां मान स्थित है। अन्यथा, हम "Not present" प्रिंट करते हैं और arr में वह स्थिति प्रिंट करते हैं जहां query में मान से बड़ा न्यूनतम मान स्थित है। हमें याद रखना होगा कि सरणियां 1-इंडेक्स्ड हैं।

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

Present 1 Not present 5 Not present 6

query का पहला मान arr में स्थिति 1 पर मौजूद है।

query का दूसरा मान arr में मौजूद नहीं है। query में मान से बड़ा न्यूनतम मान स्थिति 5 पर है।

इसी तरह, query का तीसरा मान भी arr में मौजूद नहीं है। इससे बड़ा मान arr में स्थिति 6 पर है।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • एक सरणी values परिभाषित करें
  • i := 0 से n-1 तक:
    • arr[i] को values के अंत में डालें
  • i := 0 से q-1 तक:
    • idx := (values में पहला तत्व जो query[i] से कम नहीं है) की स्थिति - values में पहले तत्व की स्थिति
    • यदि values[idx] query[i] के बराबर है:
      • "Present " प्रिंट करें
    • अन्यथा:
      • "Not present " प्रिंट करें
    • 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++ में सरणी की बिटोनिसिटी की जांच करें C++ में सरणी की बिटोनिसिटी की जांच करें

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

  1. C++ में सरणी में कुंजी K की उपस्थिति की संभावना C++ में सरणी में कुंजी K की उपस्थिति की संभावना

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

  1. C++ में बाइनरी खोज प्रोग्राम C++ में बाइनरी खोज प्रोग्राम

    बाइनरी खोज क्या है? बाइनरी खोज (आधा-अंतराल खोज) एक खोज एल्गोरिदम है जो क्रमबद्ध सरणी में लक्ष्य मान की स्थिति ढूंढता है। यह लक्ष्य मान की तुलना मध्य तत्व से करता है और खोज स्थान को आधा कर देता है। मुख्य बिंदु केवल क्रमबद्ध सरणी पर काम करता है समय जटिलता: O(log n) दुनिया के सभी नाम क्रमबद्ध हों तो