كيفية استخدام Max Heap في Java؟

Kyfyt Astkhdam Max Heap Fy Java



يمكن للمبرمج استرداد الحد الأقصى بسهولة من خلال استخدام ' ماكس كومة ' شجرة ثنائية. كما هو الحال في هذه الشجرة ، يوجد العنصر الأقصى دائمًا في العقدة العلوية للشجرة والتي تُعرف باسم ' جذر 'العقدة. علاوة على ذلك ، فإنه يوفر إدراجًا فعالاً وحذف العناصر مع الحفاظ على الترتيب الفرز. بالإضافة إلى ذلك ، يمكن لـ 'Max Heap' أداء الوظائف المجدولة بسهولة بناءً على أولويتها أو معايير أخرى.

تشرح هذه المقالة المحتوى التالي:







كيفية استخدام Max Heap في Java؟

أ ' ماكس كومة 'باعتباره هيكل البيانات الأساسي لتنفيذ قائمة انتظار الأولوية. في قائمة انتظار الأولوية ، تتم معالجة البيانات بناءً على قيمة الأولوية المخصصة لها. يمكن استخدامه أيضًا لفرز عناصر البيانات بترتيب تنازلي بكفاءة.



يمكن إنشاء 'Max Heap' باستخدام طريقتين موصوفتين على طول مثال برنامج الترميز أدناه:



الطريقة الأولى: استخدم أسلوب 'maxHeapify ()'

ال ' maxHeapify () 'طريقة تولد' ماكس كومة 'من مجموعة حالية من العناصر عن طريق تحويل هياكل البيانات. علاوة على ذلك ، تساعد هذه الطريقة في تعديل المصفوفة الأصلية في مكانها مما يقلل الحاجة إلى ذاكرة إضافية.





على سبيل المثال ، قم بزيارة الرمز أدناه لإنشاء ' ماكس كومة 'باستخدام طريقة' maxHeapify () ':

استيراد java.util.ArrayList ؛
استيراد java.util.Collections ؛
استيراد java.util.List ؛

MaxHeapifyExam فئة عامة {
العامة ثابت الفراغ الرئيسي ( خيط [ ] أرجس ) // إنشاء الرئيسية ( ) طريقة
{
قائمة < عدد صحيح > testEle = قائمة ArrayList جديدة <> ( ) ؛
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 أنا = ك / 2 - 1 ؛ أنا > = 0 ؛ أنا-- ) {
كومة ( الاختبارات Ele، k، i ) ؛
}
}

الفراغ الثابت الخاص يتراكم ( قائمة < عدد صحيح > الاختبارات Ele، int k، int i ) {
كثافة العمليات أكبر = أنا ؛
int leftSide = 2 * أنا + 1 ؛
int rightSide = 2 * أنا + 2 ؛
لو ( الجهه اليسرى < ك && testEle.get ( الجهه اليسرى ) > testEle.get ( أكبر ) ) {
أكبر = الجانب الأيسر ؛
}
لو ( الجانب الأيمن < ك && testEle.get ( الجانب الأيمن ) > testEle.get ( أكبر ) ) {
أكبر = الجانب الأيمن ؛
}
لو ( أكبر ! = أنا ) {
Collections.swap ( الاختبارات ) ؛
كومة ( الاختبارات Ele ، k ، أكبر ) ؛
}
}
}



شرح الكود أعلاه:

  • أولاً ، القائمة ' الاختبارات 'باستخدام عناصر بيانات وهمية في' رئيسي() 'وطباعتها على وحدة التحكم.
  • بعد ذلك ، يتم تمرير قائمة 'testEle' إلى وظيفة 'maxHeapify ()' ، ثم يتم عرض القائمة التي تم إرجاعها على وحدة التحكم.
  • ثم ' maxHeapify () 'تتم تهيئة الطريقة واسترداد حجم القائمة المقدمة من خلال استخدام' مقاس() ' طريقة.
  • بعد ذلك ، استخدم ' ل 'حلقة لتعيين بنية الكومة وحساب موضع كل عقدة.
  • الآن ، استخدم ' كومة () 'وتعيين موضع العقد' أعلى 'و' يسار 'و' يمين 'من خلال تعيين قيم لمتغيرات' أكبر 'و' يسار الجانب 'و' الجانب الأيمن '، على التوالي.
  • بعد ذلك ، استخدم ' لو 'العبارات الشرطية للتحقق مما إذا كان' الجهه اليسرى 'العقدة أكبر من' الجانب الأيمن 'العقدة والعكس صحيح. في النهاية ، يتم تخزين القيمة الأكبر في ' أكبر 'العقدة.
  • أخيرًا ، الجديد ' أكبر 'يتم التحقق من قيمة العقدة مع القيمة المخزنة بالفعل في' أكبر 'متغير العقدة. و ال ' تبديل() 'تعمل وفقًا لذلك لتعيين أكبر قيمة في' أكبر ' عامل.

بعد انتهاء مرحلة التنفيذ:

توضح اللقطة أن الحد الأقصى لكومة الذاكرة المؤقتة يتم إنشاؤه باستخدام ' maxHeapify () 'في جافا.

الطريقة 2: استخدم أسلوب 'Collections.reverseOrder ()'

ال ' Collections.reverseOrder () 'طريقة بسيطة وموجزة لإنشاء' ماكس كومة 'بفرز المجموعة بترتيب عكسي. يسمح هذا للشفرة بإعادة استخدام وتجنب الحاجة إلى تنفيذ ' كومة '، كما هو موضح في مقتطف الشفرة أدناه:

استيراد java.util.ArrayList ؛
استيراد java.util.Collections ؛
استيراد java.util.List ؛

فئة عامة ReverseOrderExample {
العامة ثابت الفراغ الرئيسي ( خيط [ ] أرجس ) // إنشاء الرئيسية ( ) طريقة
{
قائمة < عدد صحيح > testEle = قائمة ArrayList جديدة <> ( ) ؛
testEle.add ( 5 ) ؛
testEle.add ( 38 ) ؛
testEle.add ( 98 ) ؛
testEle.add ( 26 ) ؛
testEle.add ( 1 ) ؛
testEle.add ( 73 ) ؛
System.out.println ( 'القائمة الأصلية:' + الاختبارات ) ؛
مجموعات ( testEle ، Collections.reverseOrder ( ) ) ؛
System.out.println ( 'تم إنشاء الحد الأقصى من الكومة:' + الاختبارات ) ؛
}
}

شرح الكود أعلاه:

  • أولاً ، قم باستيراد ' ArrayList '،' المجموعات ' و ' قائمة ”في ملف جافا.
  • ثم قم بإنشاء ' قائمة ' اسم الشيئ ' الاختبارات 'وإدراج العناصر الوهمية في القائمة.
  • بعد ذلك ، ' نوع() 'لفرز عناصر البيانات بترتيب تصاعدي وتمرير القائمة كمعامل على طول' Collections.reverseOrder () ' طريقة. هذا يجعل فرز ' الاختبارات 'قائمة بترتيب عكسي.

بعد انتهاء مرحلة التنفيذ:

تُظهر اللقطة أنه يتم إنشاء 'Max Heap' وفرزها باستخدام طريقة 'Collections.reverseOrder ()'.

خاتمة

من خلال إنشاء ' ماكس كومة '، يمكن للمستخدمين استخدام أساليب' maxHeapify () 'و' Collections.reverseOrder () '. يديرون مجموعة من العناصر بطريقة تسمح بالوصول السريع إلى الحد الأقصى من العناصر وصيانة فعالة لترتيب تم فرزه. يعتمد فقط على المتطلبات المحددة ومستوى التحكم المطلوب في عملية إنشاء الكومة.