एक द्विआधारी खोज जिसे लघुगणकीय खोज के रूप में जाना जाता है, एक खोज एल्गोरिथम है जो एक क्रमबद्ध सरणी में एक तत्व की खोज करता है। एल्गोरिथ्म पुनरावर्ती रूप से सरणी को दो हिस्सों में विभाजित करता है, यदि तत्व मध्य स्थिति में पाया जाता है तो वापस लौटें अन्यथा डिवाइड को कॉल करें और तत्व मिलने तक फिर से जांचें।
कार्य कर रहा है
एल्गोरिथम सॉर्ट किए गए सरणी के मध्य तत्व की तुलना उस तत्व से करता है जिसे खोजा जाना है।
यदि खोज तत्व बराबर . है मध्य तत्व में, फिर सूचकांक लौटाएं तत्व का।
यदि खोज तत्व अधिक है मध्य तत्व की तुलना में, बाएं उपसरणी में खोजें यानी उप सरणी मध्य के अगले तत्व से सरणी के अंत तक।
यदि खोज तत्व कम है मध्य तत्व की तुलना में, दाएं उप सरणी में खोजें यानी उप सरणी पहले तत्व से सरणी के मध्य से पहले के तत्व तक।
सिंटैक्स
मानक बाइनरी सॉर्ट के लिए कॉल, निम्न सिंटैक्स का उपयोग किया जाता है -
binary_search(start_address , end_address , element)
पैरामीटर
start_address सरणी के पहले तत्व का पता है।
end_address सरणी के अंतिम तत्व का पता है।
तत्व सरणी में पाया जाने वाला तत्व है।
वापसी
यह एक पूर्णांक देता है जिसका मान सरणी में तत्व की अनुक्रमणिका के बराबर होता है यदि अन्यथा 0 देता है।
उदाहरण
#include <algorithm> #include <iostream> using namespace std; void printArray(int a[], int arraysize){ for (int i = 0; i < arraysize; ++i) cout << a[i] << " "; } int main(){ int arr[] = {1 , 5, 9, 7 , 3, 2 , 0 , 4}; int sizeofarr = sizeof(arr)/sizeof(arr[0]); cout<<"The Element of array are :\n"; printArray(arr , sizeofarr); cout<<"\nSorting Elements of array."; sort(arr , arr+sizeofarr); cout<<"\nSorted array is : "; printArray(arr, sizeofarr); cout<<"\nElement to be searched is 4"; if(binary_search(arr , arr+sizeofarr , 4)) cout<<"\nElement found "; else cout<<"\nElement not found"; }
आउटपुट
The Element of array are : 1 5 9 7 3 2 0 4 Sorting Elements of array. Sorted array is : 0 1 2 3 4 5 7 9 Element to be searched is 4