এই C++ প্রোগ্রামে আমরা ফিবোনাচি সংখ্যা ব্যবহার করে একটি ডিভাইড অ্যান্ড কঙ্কারের পদ্ধতি প্রয়োগ করি। ফিবোনাচি সংখ্যা ব্যবহার করে, আমরা ডেটা আইটেম অনুসন্ধান করতে ডেটা অ্যারের মাঝামাঝি গণনা করি। এই পদ্ধতির সময় জটিলতা হল O(log(n)).
অ্যালগরিদম
একটি সাজানো পদ্ধতিতে অ্যারেতে ডেটা বরাদ্দ করা শুরু করুন। অনুসন্ধান করার জন্য উপাদানটির ইনপুট নিন। FibonacciSearch() ফাংশন কল করুন। 'start+fib[index-2]' এক্সপ্রেশন ব্যবহার করে মধ্য মান গণনা করুন। যদি নির্বাচিত আইটেমটি মধ্য সূচকের মানের সমান হয়, ফলাফল মুদ্রণ করুন এবং মূলে ফিরে যান। যদি এটি মধ্য সূচকে মানের থেকে কম হয়, বাম সাব-অ্যারে দিয়ে এগিয়ে যান। যদি এটি মধ্য সূচকে মানের থেকে বেশি হয়, তাহলে ডান সাব-অ্যারে নিয়ে এগিয়ে যান। যদি গণনা করা মধ্য মানটি শুরু বা শেষের সমান হয় তবে আইটেমটি অ্যারেতে পাওয়া যায় না৷ শেষউদাহরণ কোড
#includenamespace ব্যবহার করে std;void FibonacciSearch(int *a, int start, int end, int *fib, int index, int আইটেম) { int i, mid; mid =start+fib[সূচী-2]; if(item ==a[mid]) { cout<<"\n আইটেম "<<মিড<<" সূচকে পাওয়া গেছে৷ প্রত্যাবর্তন } else if(item ==a[start]) { cout<<"\n আইটেম "< a[mid]) FibonacciSearch(a, mid, end, fib, index-1, item); অন্যথা FibonacciSearch(a, start, mid, fib, index-2, item); } main() { int n, i, fib[20], a[10]={3, 7, 55, 86, 7, 15, 26, 30, 46, 95}; char ch; fib[0] =0; fib[1] =1; i =1; যখন (fib[i] <10) { i++; fib[i] =fib[i-1] + fib[i-2]; } আপ:cout<<"\nঅনুসন্ধান করা উপাদানটি লিখুন:"; cin>>n; FibonacciSearch(a, 0, 9, fib, i, n); cout<<"\n\n\tআপনি কি আরও অনুসন্ধান করতে চান...চয়েস লিখুন(y/n)?"; cin>>ch; if(ch =='y' || ch =='Y') উপরে যান; রিটার্ন 0; }}
আউটপুট
যে উপাদানটি অনুসন্ধান করা হবে তা লিখুন:6 সূচকে 26টি আইটেম পাওয়া গেছে। আপনি কি আরও অনুসন্ধান করতে চান... পছন্দ(y/n) লিখুন? অনুসন্ধানের জন্য উপাদানটি প্রবেশ করান:45টি আইটেম পাওয়া যায়নি কি আপনি আরও অনুসন্ধান করতে চান.. পছন্দ লিখুন(y/n)?n