C ++ bsearch () - C ++ मानक पुस्तकालय

सी ++ में bsearch () फ़ंक्शन तत्वों की एक सरणी में एक तत्व की एक द्विआधारी खोज करता है और यदि मिला तो तत्व के लिए एक सूचक लौटाता है।

Bsearch () फ़ंक्शन को सरणी में इसके बाईं ओर खोजे जाने वाले तत्व से कम सभी तत्वों की आवश्यकता होती है।

इसी तरह, खोजे जाने वाले तत्व से अधिक सभी तत्व सरणी में इसके दाईं ओर होने चाहिए। यदि आरोही क्रम में क्रमबद्ध हो तो यह आवश्यकता पूरी होती है।

bsearch () प्रोटोटाइप

 void * bsearch (const void * key, const void * base, size_t num, size_t size, int (* तुलना) (const void *, const void *);

फ़ंक्शन को हेडर फ़ाइल में परिभाषित किया गया है।

सरणी बेस में कुंजी के लिए bsearch () फ़ंक्शन खोजता है। कुंजी से कम सभी तत्व सरणी आधार में इसके पहले प्रकट होने चाहिए। इसी तरह, कुंजी से अधिक सभी तत्व इसके आधार में दिखाई देने चाहिए।

खोज करने के लिए, bsearch () फ़ंक्शन फ़ंक्शन के लिए कॉल की एक श्रृंखला बनाता है जिसे पहले तर्क के रूप में कुंजी के साथ तुलना किया जाता है और दूसरे तर्क के रूप में सरणी से एक तत्व होता है।

bsearch () पैरामीटर

  • कुंजी: खोज करने के लिए तत्व को इंगित करता है
  • आधार: सरणी के पहले तत्व को इंगित करता है
  • संख्या: सरणी में तत्व की संख्या
  • आकार: सरणी में प्रत्येक तत्व के बाइट्स में आकार
  • तुलना: एक पॉइंटर एक फ़ंक्शन के लिए जो दो तत्वों की तुलना करता है। यह लौट आता है
    • एक नकारात्मक पूर्णांक यदि पहला तर्क दूसरे से कम है
    • एक सकारात्मक पूर्णांक यदि पहला तर्क दूसरे से अधिक है
    • शून्य यदि दोनों तर्क समान हैं

कुंजी को पहले तर्क के रूप में पास किया जाता है और सरणी से एक तत्व को दूसरे तर्क के रूप में पारित किया जाता है। तुलना फ़ंक्शन का प्रोटोटाइप ऐसा दिखता है:

 int की तुलना (const void * a, const void * b);

bsearch () वापसी मान

Bsearch () फ़ंक्शन रिटर्न:

  • पाए गए तत्व को इंगित करता है। यदि एक से अधिक मिलान तत्व पाए जाते हैं, तो यह अनिर्दिष्ट है कि किस तत्व का पता फ़ंक्शन परिणाम के रूप में वापस आ जाएगा।
  • तत्व न मिलने पर अशक्त सूचक।

उदाहरण 1: bsearch () फ़ंक्शन कैसे काम करता है?

 #include #include using namespace std; int compare(const void* a, const void* b) ( const int* x = (int*) a; const int* y = (int*) b; return (*x - *y); ) int main() ( const int num = 10; int arr(num) = (5,9,10,14,16,19,21,26,29,31); int key1 = 10; int *p1 = (int*)bsearch(&key1,arr,num,sizeof(int),compare); if(p1 == NULL) cout << key1 << " not found " << endl; else cout << key1 << " found at position " << (p1-arr) << endl; int key2 = 15; int *p2 = (int*)bsearch(&key2,arr,num,sizeof(int),compare); if(p2 == NULL) cout << key2 << " not found " << endl; else cout << key2 << " found at position " << (p2-arr) << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 10 स्थिति में पाया गया 2 15 नहीं मिला

उदाहरण 2: एक से अधिक मिलान तत्वों के लिए bsearch () फ़ंक्शन कैसे काम करता है?

 #include #include using namespace std; int compare(const void* a, const void* b) ( const int* x = (int*) a; const int* y = (int*) b; return (*x - *y); ) int main() ( const int num = 10; int arr(num) = (2,3,5,7,8,10,14,14,14,15); int key = 14; int *p = (int*)bsearch(&key,arr,num,sizeof(int),compare); if(p == NULL) cout << key << " not found " << endl; else /* 14 occurs at position 6,7 and 8*/ cout << key << " found at position " << (p-arr) << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो एक संभावित आउटपुट होगा:

 14 की स्थिति में पाया 7

दिलचस्प लेख...