ইউনিফর্ম বাইনারি অনুসন্ধানে এখানে আমরা একটি লুকআপ টেবিল ব্যবহার করে বাইনারি অনুসন্ধান বাস্তবায়ন করি। এটি বাইনারি অনুসন্ধানে একটি উন্নতি কারণ টেবিল লুকআপ একটি স্থানান্তর এবং সংযোজনের চেয়ে দ্রুত। এই পদ্ধতির সময় জটিলতা হল O(log(n)).
অ্যালগরিদম
একটি সাজানো পদ্ধতিতে অ্যারেতে ডেটা বরাদ্দ করা শুরু করুন। লুকআপ অ্যারের সর্বাধিক দৈর্ঘ্য গণনা করুন এবং একটি নতুন অ্যারে 'ডেল' ঘোষণা করুন। লুকআপ অ্যারেতে n/2, n/4 এবং '0' পর্যন্ত মানগুলি বরাদ্দ করুন, যেখানে n হল ডেটা অ্যারের দৈর্ঘ্য। UniBinarySearch() ফাংশন কল করুন। 'dl' অ্যারের '0' সূচকে মানের মাঝামাঝি বরাদ্দ করুন এবং মিড ইনডেক্সের মানের সাথে কী তুলনা করুন। যদি কী সমান হয় তবে সূচকের মানটি মূলে ফেরত দিন। যদি 'ডাল'-এ সূচকের মান শূন্য হয় তবে উপাদানটি সেখানে নেই, প্রধান - 1-এ ফিরুন। যদি এটি কম হয়, 'ডাল' অ্যারেতে সংরক্ষিত পরবর্তী মান বিয়োগ করুন এবং পয়েন্টারটিকে 'ডাল' অ্যারেতে পরবর্তী মানতে স্থানান্তর করুন। যদি এটি বড় হয়, 'ডাল' অ্যারেতে সংরক্ষিত পরবর্তী মান যোগ করুন এবং পয়েন্টারটিকে 'ডাল' অ্যারেতে পরবর্তী মানতে স্থানান্তর করুন। ফাংশন দ্বারা প্রত্যাবর্তিত সূচক মান প্রিন্ট করুন এবং আরও অনুসন্ধান করার জন্য ব্যবহারকারীর পছন্দের জন্য জিজ্ঞাসা করুন। শেষউদাহরণ কোড
#includenamespace ব্যবহার করে std;void lookUpArray(int *a, int N) { int power =1, i =0; do { int half =power; শক্তি *=2; a[i] =(N+অর্ধেক)/শক্তি; i++; } while (a[i-1] !=0);}int UniBinarySearch(int *a, int *dal, int কী) { int i =d[0]-1, d =0; পতাকা:যদি (কী ==a[i]) রিটার্ন i; else if (dal[d] ==0) রিটার্ন -1; else { if (কী >n; index =UniBinarySearch(a, del, n); যদি (সূচক ==-1) cout<<"\nআইটেম পাওয়া যায় নি"; else cout<<"\nআইটেম "< >ch; if(ch =='y' || ch =='Y') উপরে যান; রিটার্ন 0;