জাভাতে ম্যাক্স হিপ কিভাবে ব্যবহার করবেন?

Jabhate Myaksa Hipa Kibhabe Byabahara Karabena



প্রোগ্রামার ব্যবহার করে সহজেই সর্বাধিক উপাদান পুনরুদ্ধার করতে পারে ' সর্বোচ্চ স্তূপ 'বাইনারী গাছ। এই গাছের মতো, সর্বাধিক উপাদানটি সর্বদা গাছের উপরের নোডে থাকে যা '' নামে পরিচিত মূল 'নোড। অধিকন্তু, এটি সাজানো ক্রম বজায় রেখে উপাদানগুলির দক্ষ সন্নিবেশ এবং মুছে ফেলার প্রস্তাব দেয়। উপরন্তু, একটি 'ম্যাক্স হিপ' সহজেই তাদের অগ্রাধিকার বা অন্যান্য মানদণ্ডের উপর ভিত্তি করে নির্ধারিত কাজগুলি সম্পাদন করতে পারে।

এই নিবন্ধটি নিম্নলিখিত বিষয়বস্তু ব্যাখ্যা করে:







জাভাতে ম্যাক্স হিপ কিভাবে ব্যবহার করবেন?

একটি ' সর্বোচ্চ স্তূপ একটি অগ্রাধিকার সারি বাস্তবায়নের জন্য অন্তর্নিহিত ডেটা কাঠামো হিসাবে ব্যবহার করা হয়। অগ্রাধিকার সারিতে, ডেটা তাদের নির্ধারিত অগ্রাধিকার মানের উপর ভিত্তি করে প্রক্রিয়া করা হয়। এটি দক্ষতার সাথে, অবরোহী ক্রমে ডেটা উপাদানগুলিকে সাজানোর জন্যও ব্যবহার করা যেতে পারে।



'ম্যাক্স হিপ' দুটি পদ্ধতি ব্যবহার করে তৈরি করা যেতে পারে যা নীচে কোডেক উদাহরণ বরাবর বর্ণনা করা হয়েছে:



পদ্ধতি 1: 'maxHeapify()' পদ্ধতি ব্যবহার করুন

দ্য ' maxHeapify() 'পদ্ধতি একটি 'উত্পন্ন করে সর্বোচ্চ স্তূপ ” ডেটা স্ট্রাকচার রূপান্তর করে উপাদানগুলির একটি বিদ্যমান সংগ্রহ থেকে। অধিকন্তু, এই পদ্ধতিটি অতিরিক্ত মেমরির প্রয়োজনীয়তা হ্রাস করে মূল অ্যারেটি পরিবর্তন করতে সহায়তা করে।





উদাহরণস্বরূপ, একটি 'উত্পন্ন করতে নীচের কোডটি দেখুন সর্বোচ্চ স্তূপ 'maxHeapify()' পদ্ধতি ব্যবহার করে:

java.util.ArrayList আমদানি করুন;
java.util.সংগ্রহ আমদানি করুন;
java.util.List আমদানি করুন;

পাবলিক ক্লাস MaxHeapifyExam {
পাবলিক স্ট্যাটিক অকার্যকর প্রধান ( স্ট্রিং [ ] args ) // প্রধান সৃষ্টি ( ) পদ্ধতি
{
তালিকা < পূর্ণসংখ্যা > testsEle = নতুন অ্যারেলিস্ট <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'মূল তালিকা:' + পরীক্ষা ) ;
maxHeapify ( পরীক্ষা ) ;
System.out.println ( 'সর্বোচ্চ হিপ জেনারেট হয়েছে:' + পরীক্ষা ) ;
}

ব্যক্তিগত স্ট্যাটিক অকার্যকর maxHeapify ( তালিকা < পূর্ণসংখ্যা > পরীক্ষা ) {
int k = testEle.size ( ) ;
জন্য ( int i = k / 2 - 1 ; i > = 0 ; আমি-- ) {
heapify ( testsEle, k, i ) ;
}
}

ব্যক্তিগত স্ট্যাটিক অকার্যকর heapify ( তালিকা < পূর্ণসংখ্যা > testsEle, int k, int i ) {
int greater = i;
int leftSide = 2 * i+ 1 ;
int rightSide = 2 * i+ 2 ;
যদি ( বাম পাশে < k && testEle.get ( বাম পাশে ) > testEle.get ( বৃহত্তর ) ) {
greater = leftSide;
}
যদি ( ডান পাশ < k && testEle.get ( ডান পাশ ) > testEle.get ( বৃহত্তর ) ) {
greater = rightSide;
}
যদি ( বৃহত্তর ! = i ) {
সংগ্রহ.swap ( testsEle, i, বৃহত্তর ) ;
heapify ( testsEle, k, বৃহত্তর ) ;
}
}
}



উপরের কোডের ব্যাখ্যা:

  • প্রথমত, তালিকা ' পরীক্ষা 'তে ডামি ডেটা উপাদান দিয়ে আরম্ভ করা হয়' প্রধান() ” পদ্ধতি এবং কনসোলে মুদ্রিত।
  • এরপরে, 'testEle' তালিকাটি 'maxHeapify()' ফাংশনে পাস করা হয় এবং তারপরে ফিরে আসা তালিকাটি কনসোলে প্রদর্শিত হয়।
  • এরপর ' maxHeapify() ' পদ্ধতি শুরু করা হয় এবং প্রদত্ত তালিকার আকার ' ব্যবহার করে পুনরুদ্ধার করা হয় আকার() 'পদ্ধতি।
  • পরবর্তী, ব্যবহার করুন ' জন্য হিপ স্ট্রাকচার সেট করতে এবং প্রতিটি নোডের অবস্থান গণনা করতে লুপ।
  • এখন, ব্যবহার করুন ' heapify() ” পদ্ধতি এবং যথাক্রমে “বৃহত্তর”, “বামপাশ” এবং “রাইটসাইড” ভেরিয়েবলের মান নির্ধারণ করে “শীর্ষ”, “বাম” এবং “ডান” নোডগুলির জন্য অবস্থান নির্ধারণ করুন।
  • এর পরে, একাধিক ব্যবহার করুন ' যদি ' শর্তসাপেক্ষ বিবৃতি পরীক্ষা করার জন্য ' বাম পাশে 'নোড' এর চেয়ে বড় ডান পাশ ” নোড এবং তদ্বিপরীত। শেষ পর্যন্ত, বৃহত্তর মান 'এ সঞ্চিত হয় বৃহত্তর 'নোড।
  • অবশেষে, নতুন ' বৃহত্তর ' নোডের মান ইতিমধ্যেই সংরক্ষিত মান দিয়ে পরীক্ষা করা হয় ' বৃহত্তর ” নোড পরিবর্তনশীল। এবং ' অদলবদল() ' ফাংশন অনুযায়ী কাজ করে সবচেয়ে বড় মান সেট করতে ' বৃহত্তর ' পরিবর্তনশীল।

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:

স্ন্যাপশট দেখায় ' ব্যবহার করে সর্বোচ্চ হিপ তৈরি করা হয়েছে maxHeapify() ' জাভাতে পদ্ধতি।

পদ্ধতি 2: 'Collections.reverseOrder()' পদ্ধতি ব্যবহার করুন

দ্য ' Collections.reverseOrder() 'পদ্ধতি একটি 'উত্পন্ন করার জন্য একটি সহজ এবং সংক্ষিপ্ত পদ্ধতি প্রদান করে সর্বোচ্চ স্তূপ ” সংগ্রহকে বিপরীত ক্রমে সাজিয়ে। এটি কোড পুনরায় ব্যবহার করার অনুমতি দেয় এবং কাস্টম বাস্তবায়নের প্রয়োজনীয়তা এড়ায় heapify 'যুক্তি, নীচের কোড স্নিপেটে দেখানো হয়েছে:

java.util.ArrayList আমদানি করুন;
java.util.সংগ্রহ আমদানি করুন;
java.util.List আমদানি করুন;

পাবলিক ক্লাস রিভার্সঅর্ডার উদাহরণ {
পাবলিক স্ট্যাটিক অকার্যকর প্রধান ( স্ট্রিং [ ] args ) // প্রধান সৃষ্টি ( ) পদ্ধতি
{
তালিকা < পূর্ণসংখ্যা > testsEle = নতুন অ্যারেলিস্ট <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'মূল তালিকা:' + পরীক্ষা ) ;
কালেকশনস.সর্ট ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'সর্বোচ্চ স্তূপ তৈরি করা হয়েছে:' + পরীক্ষা ) ;
}
}

উপরের কোডের ব্যাখ্যা:

  • প্রথমে, আমদানি করুন ' অ্যারেলিস্ট ', ' সংগ্রহ ' এবং ' তালিকা ” জাভা ফাইলে ইউটিলিটি।
  • তারপর, একটি তৈরি করুন ' তালিকা 'নাম' পরীক্ষা এবং তালিকায় ডামি উপাদান সন্নিবেশ করান।
  • পরবর্তী, ' সাজান() ' পদ্ধতিটি ডেটা উপাদানগুলিকে আরোহী ক্রমে সাজাতে এবং ' বরাবর একটি প্যারামিটার হিসাবে তালিকাটি পাস করতে ব্যবহার করা হয় Collections.reverseOrder() 'পদ্ধতি। এটি বাছাই করে তোলে ' পরীক্ষা ' বিপরীত ক্রমে তালিকা.

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:

স্ন্যাপশট দেখায় যে 'ম্যাক্স হিপ' তৈরি করা হয়েছে এবং 'Collections.reverseOrder()' পদ্ধতি ব্যবহার করে সাজানো হয়েছে।

উপসংহার

তৈরি করে ' সর্বোচ্চ স্তূপ ', ব্যবহারকারীরা 'maxHeapify()' এবং 'Collections.reverseOrder()' পদ্ধতি ব্যবহার করতে পারেন। তারা এমনভাবে উপাদানগুলির একটি সংগ্রহ পরিচালনা করে যা সর্বাধিক উপাদানগুলিতে দ্রুত অ্যাক্সেস এবং একটি সাজানো অর্ডারের দক্ষ রক্ষণাবেক্ষণের অনুমতি দেয়। এটি শুধুমাত্র নির্দিষ্ট প্রয়োজনীয়তা এবং স্তূপ তৈরির প্রক্রিয়ার উপর প্রয়োজনীয় নিয়ন্ত্রণের স্তরের উপর নির্ভর করে।