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

बाइनरी सर्च कार्यान्वयन में एक समस्या


हम जानते हैं कि बाइनरी सर्च एल्गोरिदम रैखिक खोज एल्गोरिदम से बेहतर है। यह एल्गोरिदम निष्पादित होने में O(log n) समय लेता है। हालांकि अधिकांश मामलों में कार्यान्वित कोड में कुछ समस्या होती है। आइए एक बाइनरी सर्च एल्गोरिदम फ़ंक्शन पर विचार करें जैसे नीचे -

उदाहरण

int binarySearch(int array[], int start, int end, int key){     if(start <= end){         int mid = (start + end) /2); //mid location of the list         if(array[mid] == key)             return mid;         if(array[mid] > key)             return binarySearch(array, start, mid-1, key);             return binarySearch(array, mid+1, end, key);     }     return -1; }

यह एल्गोरिदम तब तक ठीक काम करेगा जब तक स्टार्ट और एंड एक बड़ी संख्या तक नहीं पहुंच जाते। यदि (स्टार्ट + एंड) 2^32 - 1 के मान से अधिक हो जाता है तो यह लपेटने के बाद एक नकारात्मक संख्या लौटा सकता है। और चूंकि नकारात्मक संख्याएं सरणी सूचकांक के रूप में समर्थित नहीं हैं, तो यह कुछ समस्या पैदा कर सकता है।

इस समस्या को दूर करने के लिए, कुछ अलग तरीके हैं।

विधि 1

int mid = start + ((end - start) / 2)

दूसरी विधि केवल जावा में काम करेगी क्योंकि C या C++ में >>> ऑपरेटर नहीं है।

विधि 2 (केवल जावा)

int mid = (start + end) >>> 1

चूंकि >>> C या C++ में समर्थित नहीं है, तो हम निम्नलिखित विधि का उपयोग कर सकते हैं।

विधि 3

int mid = ((unsigned int) low + (unsigned int) high) >> 1

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

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

  1. डेटा स्ट्रक्चर में इष्टतम बाइनरी सर्च ट्री डेटा स्ट्रक्चर में इष्टतम बाइनरी सर्च ट्री

    पूर्णांक का एक सेट सॉर्टेड क्रम में दिया गया है और दूसरा सरणी freq आवृत्ति गणना के लिए है। हमारा कार्य उन डेटा के साथ एक बाइनरी सर्च ट्री बनाना है ताकि सभी खोजों के लिए न्यूनतम लागत प्राप्त हो सके।सब-प्रॉब्लम्स के समाधान को हल करने और स्टोर करने के लिए एक सहायक सरणी cost[n, n] बनाई जाती है। कॉस्ट मै

  1. C# में बाइनरी सर्च (Binary Search) C# में बाइनरी सर्च (Binary Search)

    बाइनरी सर्च एक सॉर्टेड ऐरे पर काम करता है। मान की तुलना ऐरे के मध्य एलिमेंट से की जाती है। यदि समानता नहीं मिलती है, तो वह आधा भाग हटा दिया जाता है जिसमें मान नहीं होता है। उसी तरह, दूसरे आधे भाग की खोज की जाती है।यहां हमारे ऐरे में मध्य एलिमेंट है। मान लीजिए हमें 62 ढूंढना है, तो बायां भाग हटा दिया