কম্পিউটার

ইন্টারপোলেশন অনুসন্ধান অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম


বাইনারি অনুসন্ধান কৌশলের জন্য, তালিকাগুলি সমান অংশে বিভক্ত। ইন্টারপোলেশন অনুসন্ধান কৌশলের জন্য, প্রক্রিয়াটি ইন্টারপোলেশন সূত্র ব্যবহার করে সঠিক অবস্থান সনাক্ত করার চেষ্টা করবে। আনুমানিক অবস্থান খোঁজার পরে, এটি সেই অবস্থান ব্যবহার করে তালিকাটি আলাদা করতে পারে। যেহেতু এটি প্রতিবার সঠিক অবস্থান খুঁজে বের করার চেষ্টা করে, তাই অনুসন্ধানের সময় হ্রাস পায়। আইটেমগুলি সমানভাবে বিতরণ করা হলে এই কৌশলটি সহজেই আইটেমগুলি খুঁজে পেতে পারে৷

ইন্টারপোলেশন সার্চ টেকনিকের জটিলতা

  • সময়ের জটিলতা:O(log2 (লগ2 n)) গড় ক্ষেত্রে, এবং O(n) সবচেয়ে খারাপ ক্ষেত্রে (যখন আইটেমগুলি দ্রুতগতিতে বিতরণ করা হয়)

  • স্থান জটিলতা:O(1)

ইনপুট − ডেটার একটি সাজানো তালিকা 10 13 15 26 28 50 56 88 94 127 159 356 480 567 689 699 780 850 956 995। সার্চ কী 780 আউটপুট অবস্থানে পাওয়া গেছে −আউটপুট> 

অ্যালগরিদম

ইন্টারপোলেশন সার্চ (অ্যারে, শুরু, শেষ, কী)

ইনপুট :একটি সাজানো অ্যারে, শুরু এবং শেষ অবস্থান, এবং অনুসন্ধান কী

আউটপুট :কীটির অবস্থান (যদি পাওয়া যায়), অন্যথায় ভুল অবস্থান।

শুরু করার সময় শুরু করুন <=শেষ এবং কী>=অ্যারে[স্টার্ট] এবং কী <=অ্যারে[এন্ড] ডিস্ট করুন :=কী – অ্যারে[স্টার্ট] ভ্যালরেঞ্জ :=অ্যারে[শেষ] – অ্যারে[স্টার্ট] ভগ্নাংশ :=dist / valRange indexRange :=শেষ - প্রারম্ভিক অনুমান :=start + (ভগ্নাংশ * indexRange) যদি array[estimate] =কী তারপর অ্যারে [estimate] <কী তারপর শুরু :=অনুমান + 1 অন্য শেষ =অনুমান -1 সম্পন্ন ফেরত অবৈধ অবস্থানশেষ

উদাহরণ কোড

#include namespace ব্যবহার করে std;int interpolationSearch(int array[], int start, int end, int key) { int dist, valRange, indexRange, অনুমান; ভাসমান ভগ্নাংশ; while(start <=end &&key>=array[start] &&key <=array[end]) { dist =key - array[start]; valRange =array[end] - array[start]; // মানের ভগ্নাংশের পরিসর =dist / valRange; indexRange =শেষ - শুরু; অনুমান =শুরু + (ভগ্নাংশ * সূচক রেঞ্জ); //কীটির আনুমানিক অবস্থান যদি(অ্যারে[অনুমান] ==কী) রিটার্ন অনুমান; if(array[estimate] > n; int arr[n]; // আকারের একটি অ্যারে তৈরি করুন n cout <<"আইটেমগুলি লিখুন:" <> arr[i]; } cout <<"তালিকায় অনুসন্ধান করতে অনুসন্ধান কী লিখুন:"; cin>> searchKey; if((loc =interpolationSearch(arr, 0, n-1, searchKey))>=0) cout <<"স্থানে আইটেম পাওয়া গেছে:" < 

আউটপুট

<প্রে>আইটেমের সংখ্যা লিখুন:20টি আইটেম লিখুন:10 13 15 26 28 50 56 88 94 127 159 356 480 567 689 699 780 850 956995এ অনুসন্ধান কী লিখুন:6 নম্বর তালিকাতে সন্ধান করুন:01টি তালিকায় পাওয়া গেছে>
  1. Lagrange সূত্র ব্যবহার করে বিপরীত ইন্টারপোলেশন বাস্তবায়নের জন্য C++ প্রোগ্রাম

  2. C++ প্রোগ্রামে বাইনারি অনুসন্ধান?

  3. একটি নির্দিষ্ট সার্চ সিকোয়েন্সের জন্য একটি বাইনারি অনুসন্ধান অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. ইন্টারপোলেশন অনুসন্ধান