বাইনারি সার্চ যাকে লগারিদমিক সার্চও বলা হয়, একটি সার্চ অ্যালগরিদম যা সর্ট করা অ্যারেতে একটি উপাদান খুঁজে বের করে। অ্যালগরিদমটি রিকার্সিভভাবে অ্যারেকে দুটি অর্ধেক ভাগ করে, যদি উপাদানটি মাঝপথের পজিশনে পাওয়া যায় তবে রিটার্ন করে, অন্যথায় আবার ভাগ করে চেক করে যতক্ষণ না উপাদানটি পাওয়া যায়।
কাজ করার পদ্ধতি
অ্যালগরিদমটি সর্ট করা অ্যারেতে মাঝপথের উপাদানটি খুঁজে বের করার জন্য সার্চ করার উপাদানের সাথে তুলনা করে কাজ করে।
- যদি সার্চ উপাদানটি মাঝপথের উপাদানের সমান হয়, তবে উপাদানের ইন্ডেক্স রিটার্ন করে।
- যদি সার্চ উপাদানটি মাঝপথের উপাদানের চেয়ে বড় হয়, তবে বাম সাব-অ্যারেতে সার্চ করে (মাঝপথের পরবর্তী উপাদান থেকে অ্যারেতের শেষ পর্যন্ত)।
- যদি সার্চ উপাদানটি মাঝপথের উপাদানের চেয়ে ছোট হয়, তবে ডান সাব-অ্যারেতে সার্চ করে (প্রথম উপাদান থেকে মাঝপথের পূর্ববর্তী উপাদান পর্যন্ত)।
সিনট্যাক্স
স্ট্যান্ডার্ড বাইনারি সার্চ কল করার জন্য নিচের সিনট্যাক্স ব্যবহার করা হয়:
binary_search(start_address, end_address, element)
প্যারামিটার
- start_address হল অ্যারেতে প্রথম উপাদানের ঠিকানা।
- end_address হল অ্যারেতে শেষ উপাদানের ঠিকানা।
- element হল অ্যারেতে খুঁজে বের করার উপাদান।
রিটার্ন
যদি উপাদানটি পাওয়া যায় তবে এটি উপাদানের ইন্ডেক্সের সমান একটি ইন্টিজার রিটার্ন করে, অন্যথায় ০ রিটার্ন করে।
উদাহরণ
#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 Element found