परिचय
हम जानते हैं कि बाइनरी सर्च दृष्टिकोण सबसे उपयुक्त और प्रभावी सॉर्टिंग एल्गोरिदम में से एक है। यह सॉर्टेड अनुक्रम पर काम करता है। एल्गोरिदम सरल है, यह मध्य से तत्व ढूंढता है, फिर सूची को दो भागों में विभाजित करता है, और बाएं उप-सूची या दाएं उप-सूची की ओर बढ़ता है।
हम इसका एल्गोरिदम जानते हैं। अब हम देखेंगे कि मल्टीथ्रेडिंग वातावरण में बाइनरी सर्च तकनीक का उपयोग कैसे करें। थ्रेड्स की संख्या सिस्टम में मौजूद कोर की संख्या पर निर्भर करती है। आइए कोड देखें।
C++ प्रोग्राम उदाहरण
#include <iostream>
#define MAX 16
#define MAX_THREAD 4
using namespace std;
int arr[] = { 1, 6, 8, 11, 13, 14, 15, 19, 21, 23, 26, 28, 31, 65, 108, 220 };
int key = 31;
bool found = false;
int part = 0;
void* binary_search(void* arg) {
int thread_part = part++;
int mid;
int start = thread_part * (MAX / 4);
int end = (thread_part + 1) * (MAX / 4);
while (start < end && !found) {
mid = (end - start) / 2 + start;
if (arr[mid] == key) {
found = true;
break;
}
else if (arr[mid] > key)
end = mid - 1;
else
start = mid + 1;
}
}
main() {
pthread_t threads[MAX_THREAD];
for (int i = 0; i < MAX_THREAD; i++)
pthread_create(&threads[i], NULL, binary_search, (void*)NULL);
for (int i = 0; i < MAX_THREAD; i++)
pthread_join(threads[i], NULL);
if (found)
cout << key << " array में मिला" << endl;
else
cout << key << " array में नहीं मिला" << endl;
}
आउटपुट
31 array में मिला