অর্ডার-স্ট্যাটিস্টিক অ্যালগরিদম ব্যবহার করে প্রদত্ত তালিকা থেকে সবচেয়ে বড় সংখ্যা খুঁজে বের করার জন্য এটি একটি C++ প্রোগ্রাম।
অ্যালগরিদম
ট্রিতে নোড সন্নিবেশ করতে Insert() ফাংশন শুরু করুন:আর্গুমেন্ট:রুট, ডি। ফাংশনের বডি:ট্রি সম্পূর্ণ শূন্য হলে রুট হিসেবে নতুন নোড যোগ করুন। d =tmp->ডেটা হলে, সেই নির্দিষ্ট নোডের সংখ্যা বাড়ান। dডেটা হলে, tmp পয়েন্টারটি বাম চাইল্ডে নিয়ে যান। d> tmp->ডেটা হলে, tmp পয়েন্টারটিকে ডান চাইল্ডে নিয়ে যান। EndBegin ফাংশন AssignRank() গাছের প্রতিটি নোডে র্যাঙ্ক বরাদ্দ করতে:আর্গুমেন্ট:রুট। ফাংশনের বডি:মূলের বাম সন্তান হলে শূন্য হয় না। তারপর মূলের বাম সন্তানকে র্যাঙ্ক বরাদ্দ করুন। র্যাঙ্ক কাউন্ট বাড়ান। মূলের ডান সন্তান হলে শূন্য হয় না। তারপর রুটের ডান চাইল্ডকে র্যাঙ্ক বরাদ্দ করুন। EndBegin ফাংশন সিলেক্ট() ট্রিতে সংরক্ষিত ডাটা থেকে Kth ক্ষুদ্রতম উপাদান অনুসন্ধান করতে:আর্গুমেন্ট:রুট, অনুসন্ধান করা উপাদান k। ফাংশনের মূল অংশ:যদি সমান পাওয়া যায়, তবে মূলে ফিরে যান এবং ফলাফলটি মুদ্রণ করুন। অন্যথায় যদি এটি বড় হয় তবে অস্থায়ী পরিবর্তনশীলটিকে সঠিক সন্তানের কাছে স্থানান্তর করুন। অন্যথায় অস্থায়ী ভেরিয়েবলটিকে বাম শিশুর কাছে স্থানান্তর করুন উদাহরণ
#includeনেমস্পেস ব্যবহার করে std;static int cnt =0;struct nod //নোডের ঘোষণা { int ডেটা; int র্যাঙ্ক; নড *l; nod *r;};nod* CreateNod(int d) //নতুন নোডের সৃষ্টি{ nod *newnod =new nod; নিউনোড->ডেটা =ডি; নিউনোড->র্যাঙ্ক =0; newnod->l =NULL; newnod->r =NULL; রিটার্ন newnod;}nod* Insert(nod* root, int d) //perform insertion{ nod *tmp =CreateNod(d); nod *t =নতুন নড; t =root; if(root ==NULL) root =tmp; else { while(t !=NULL) { if(t->data r==NULL) { t->r =tmp; বিরতি } t =t->r; } else if(t->ডেটা> d) { if(t->l ==NULL) { t->l=tmp; বিরতি } t =t->l; } } } রিটার্ন রুট;} void AssignRank(nod *root) //নোডগুলিতে র্যাঙ্ক বরাদ্দ করুন{ if(root->l!=NULL) AssignRank(root->l); root->র্যাঙ্ক =cnt; cnt++; if(root->r!=NULL) AssignRank(root->r);}int Select(nod* root, int k) //kth বৃহত্তম উপাদান নির্বাচন করুন{ if(root->rank ==k) রুট-> রিটার্ন করুন তথ্য অন্যথায় যদি(রুট->র্যাঙ্ক> কে) রিটার্ন সিলেক্ট (রুট->এল, কে); অন্যথায় Select(root->r, k);} void display(nod *root) // ট্রি প্রদর্শন করুন। if(root->l !=NULL) প্রদর্শন(root->l); cout<<"\n ডেটা:"< ডেটা<<" র্যাঙ্ক:"< র্যাঙ্ক; if(root->r!=NULL) display(root->r);}int main() { char c; int n, i, k, a[10]={4,7,6,1,10,3,2,15,16,20}; nod *root =নতুন নড; root =NULL; for(i =0; i <10; i++) root =Insert(root, a[i]); // ফাংশন insert() cout কল করুন<<"k এর মান লিখুন:"; cin>>k; অ্যাসাইন র্যাঙ্ক(রুট); // Assignrank() cout ফাংশনটিকে কল করুন<<"\nপ্রতিটি নোডের সাথে যুক্ত র্যাঙ্ক:-"; প্রদর্শন (মূল); // ফাংশন ডিসপ্লে() cout<<"কে কল করুন\n\nkth বৃহত্তম উপাদান হল:"<