এই প্রোগ্রামে আমাদের একটি অ্যারেতে একটি সার্চ সিকোয়েন্সের অস্তিত্ব খুঁজে বের করতে হবে বাইনারি সার্চ বাস্তবায়ন করে। বাইনারি সার্চের সময় জটিলতা O(log n)।
প্রয়োজনীয় ধাপ এবং 의사-কোড
শুরু BinarySearch() ফাংশনে 'arr' ডাটা অ্যারে এবং 'n' মানগুলির সংখ্যা, শুরু এবং শেষ ইনডেক্স, ইটারেশন কাউন্ট এবং b[0] সার্চ করার উপাদান আর্গুমেন্ট হিসেবে থাকে। ইটারেশন কাউন্টার বাড়ান এবং আইটেম মানকে a[mid]-এর সাথে তুলনা করুন। যদি আইটেম < a[mid] হয় তবে প্রথম অর্ধেক বেছে নিন অন্যথায় দ্বিতীয় অর্ধেক দিয়ে এগিয়ে যান। ইনডেক্স মান main-এ ফেরত দিন। main()-এ, সার্চ সিকোয়েন্সের বাকি আইটেমগুলোকে অ্যারেতে পরবর্তী আইটেমের সাথে ক্রমাগত তুলনা করুন। পাওয়া সিকোয়েন্সের ইনডেক্স রেঞ্জ প্রিন্ট করুন। শেষ।
উদাহরণ কোড
#include <iostream>
using namespace std;
int BinarySearch(int a[], int start, int end, int item, int iter) {
int i, mid;
iter++;
mid = start + (end - start + 1) / 2;
if (item > a[end] || item < a[start] || mid == end) {
cout << "\nনहीं मिला";
return -1;
} else if (item == a[mid]) {
return mid;
} else if (item == a[start]) {
return start;
} else if (item == a[end]) {
return end;
} else if (item > a[mid])
BinarySearch(a, mid, end, item, iter);
else
BinarySearch(a, start, mid, item, iter);
}
int main() {
int n, i, flag = 0, Bin, len = 9, a[10] = {1, 7, 15, 26, 29, 35, 38, 40, 49, 51};
cout << "\nসার্চ সিকোয়েন্সে উপাদানের সংখ্যা লিখুন: ";
cin >> n;
int b[n];
for (i = 0; i < n; i++) {
cin >> b[i];
}
Bin = BinarySearch(a, 0, len, b[0], 0);
if (Bin == -1) {
cout << "\nनहीं मिला।";
return 0;
} else {
for (i = Bin; i < n + Bin; i++)
if (a[i] != b[i - Bin])
flag = 4;
if (flag == 4)
cout << "\nनहीं मिला।";
else
cout << "\nসিকোয়েন্স " << Bin << " এবং " << Bin + n << " ইনডেক্সের মধ্যে পাওয়া গেছে।";
}
return 0;
}
আউটপুট
সার্চ সিকোয়েন্সে উপাদানের সংখ্যা লিখুন: 4 15 26 29 35 সিকোয়েন্স 2 এবং 6 ইনডেক্সের মধ্যে পাওয়া গেছে।