جاوا میں میکس ہیپ کا استعمال کیسے کریں؟

Jawa My Myks Yp Ka Ast Mal Kys Kry



پروگرامر 'کا استعمال کرکے زیادہ سے زیادہ عنصر کو آسانی سے بازیافت کرسکتا ہے۔ زیادہ سے زیادہ ڈھیر 'بائنری درخت. جیسا کہ اس درخت میں، زیادہ سے زیادہ عنصر ہمیشہ درخت کے اوپری نوڈ پر رہتا ہے جسے 'کے نام سے جانا جاتا ہے۔ جڑ نوڈ مزید یہ کہ یہ ترتیب شدہ ترتیب کو برقرار رکھتے ہوئے عناصر کو موثر اندراج اور حذف کرنے کی پیش کش کرتا ہے۔ اس کے علاوہ، ایک 'زیادہ سے زیادہ ہیپ' اپنی ترجیح یا دوسرے معیار کی بنیاد پر طے شدہ کام آسانی سے انجام دے سکتا ہے۔

یہ مضمون درج ذیل مواد کی وضاحت کرتا ہے:







جاوا میں میکس ہیپ کا استعمال کیسے کریں؟

ایک ' زیادہ سے زیادہ ڈھیر ترجیحی قطار کو لاگو کرنے کے لیے بنیادی ڈیٹا ڈھانچے کے طور پر استعمال کیا جاتا ہے۔ ترجیحی قطار میں، ڈیٹا پر ان کی تفویض کردہ ترجیحی قدر کی بنیاد پر کارروائی کی جاتی ہے۔ اس کا استعمال ڈیٹا عناصر کو نزولی ترتیب میں مؤثر طریقے سے کرنے کے لیے بھی کیا جا سکتا ہے۔



'زیادہ سے زیادہ ہیپ' کو دو طریقوں سے تیار کیا جا سکتا ہے جو ذیل میں کوڈیک مثال کے ساتھ بیان کیے گئے ہیں:



طریقہ 1: 'maxHeapify()' طریقہ استعمال کریں۔

' maxHeapify() 'طریقہ ایک پیدا کرتا ہے' زیادہ سے زیادہ ڈھیر ڈیٹا ڈھانچے کو تبدیل کرکے عناصر کے موجودہ مجموعہ سے۔ مزید یہ کہ یہ طریقہ اصل صف میں ترمیم کرنے میں مدد کرتا ہے اور اضافی میموری کی ضرورت کو کم کرتا ہے۔





مثال کے طور پر، ایک پیدا کرنے کے لیے نیچے دیے گئے کوڈ پر جائیں۔ زیادہ سے زیادہ ڈھیر 'maxHeapify()' طریقہ استعمال کرتے ہوئے:

java.util.ArrayList درآمد کریں؛
java.util.Collections درآمد کریں؛
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 ; میں > = 0 ; میں-- ) {
ڈھیر لگانا ( ٹیسٹ Ele, k, i ) ;
}
}

نجی جامد باطل ہیپیفائی ( فہرست < عدد > testsEle، int k، int i ) {
int greater = i؛
int leftSide = 2 * میں + 1 ;
int rightSide = 2 * میں + 2 ;
اگر ( بائیں طرف < ک && testEle.get ( بائیں طرف ) > testEle.get ( زیادہ ) ) {
عظیم = بائیں طرف؛
}
اگر ( دائیں طرف < ک && testEle.get ( دائیں طرف ) > testEle.get ( زیادہ ) ) {
گریٹر = دائیں طرف؛
}
اگر ( زیادہ ! = میں ) {
Collections.swap ( testsEle، i، گریٹر ) ;
ڈھیر لگانا ( testsEle, k, greater ) ;
}
}
}



مندرجہ بالا کوڈ کی وضاحت:

  • سب سے پہلے، فہرست ' ٹیسٹ 'میں ڈمی ڈیٹا عناصر کے ساتھ شروع کیا جاتا ہے' مرکزی() ' طریقہ اور کنسول پر چھپی ہوئی ہے۔
  • اس کے بعد، 'testEle' کی فہرست کو 'maxHeapify()' فنکشن میں منتقل کیا جاتا ہے، اور پھر واپس کی گئی فہرست کنسول پر ظاہر ہوتی ہے۔
  • پھر ' maxHeapify() 'طریقہ شروع کیا جاتا ہے اور فراہم کردہ فہرست کے سائز کو استعمال کرکے بازیافت کیا جاتا ہے' سائز() 'طریقہ.
  • اگلا، استعمال کریں ' کے لیے ڈھیر کا ڈھانچہ سیٹ کرنے اور ہر نوڈ کی پوزیشن کا حساب لگانے کے لیے لوپ۔
  • اب، استعمال کریں ' heapify() 'طریقہ کار بنائیں اور بالترتیب 'زیادہ'، 'بائیں طرف' اور 'دائیں طرف' متغیرات کو قدریں تفویض کرکے 'اوپر'، 'بائیں' اور 'دائیں' نوڈس کے لیے پوزیشن سیٹ کریں۔
  • اس کے بعد، متعدد استعمال کریں ' اگر ' مشروط بیانات چیک کرنے کے لیے کہ آیا ' بائیں طرف 'نوڈ' سے بڑا ہے دائیں طرف نوڈ اور اس کے برعکس۔ آخر میں، بڑی قدر ذخیرہ ہو جاتی ہے ' زیادہ نوڈ
  • آخر میں، نیا ' زیادہ نوڈ ویلیو کو پہلے سے ذخیرہ شدہ قدر کے ساتھ چیک کیا جاتا ہے۔ زیادہ نوڈ متغیر. اور ' تبادلہ () ' فنکشن اس کے مطابق کام کرتا ہے ' میں سب سے بڑی قدر سیٹ کرنے کے لیے زیادہ متغیر

پھانسی کے مرحلے کے اختتام کے بعد:

اسنیپ شاٹ سے پتہ چلتا ہے کہ 'کا استعمال کرتے ہوئے زیادہ سے زیادہ ہیپ تیار کیا گیا ہے۔ maxHeapify() 'جاوا میں طریقہ۔

طریقہ 2: 'Collections.reverseOrder()' طریقہ استعمال کریں۔

' Collections.reverseOrder() 'طریقہ ایک پیدا کرنے کے لئے ایک سادہ اور جامع طریقہ پیش کرتا ہے' زیادہ سے زیادہ ڈھیر ” جمع کو الٹ ترتیب میں ترتیب دے کر۔ یہ کوڈ کو دوبارہ استعمال کرنے کی اجازت دیتا ہے اور اپنی مرضی کے مطابق عمل درآمد کرنے کی ضرورت سے گریز کرتا ہے۔ ڈھیر لگانا 'منطق، جیسا کہ نیچے کوڈ کے ٹکڑوں میں دکھایا گیا ہے:

java.util.ArrayList درآمد کریں؛
java.util.Collections درآمد کریں؛
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 ( 'اصل فہرست:' + ٹیسٹ ) ;
Collections.sort ( testsEle، Collections.reverseOrder ( ) ) ;
System.out.println ( 'زیادہ سے زیادہ ڈھیر پیدا ہوا:' + ٹیسٹ ) ;
}
}

مندرجہ بالا کوڈ کی وضاحت:

  • سب سے پہلے، درآمد کریں ' ArrayList '،' مجموعے 'اور' فہرست 'جاوا فائل میں افادیت۔
  • پھر، ایک بنائیں ' فہرست 'نام' ٹیسٹ اور فہرست میں ڈمی عناصر داخل کریں۔
  • اگلا، ' ترتیب دیں() ڈیٹا عناصر کو صعودی ترتیب میں ترتیب دینے اور فہرست کو پیرامیٹر کے طور پر پاس کرنے کے لیے طریقہ استعمال کیا جاتا ہے۔ Collections.reverseOrder() 'طریقہ. اس سے چھانٹتی ہے ' ٹیسٹ ' فہرست الٹ ترتیب میں۔

پھانسی کے مرحلے کے اختتام کے بعد:

اسنیپ شاٹ سے پتہ چلتا ہے کہ 'زیادہ سے زیادہ ہیپ' کو 'Collections.reverseOrder()' طریقہ استعمال کرتے ہوئے تخلیق اور ترتیب دیا گیا ہے۔

نتیجہ

بنا کر ' زیادہ سے زیادہ ڈھیر '، صارفین 'maxHeapify()' اور 'Collections.reverseOrder()' طریقے استعمال کر سکتے ہیں۔ وہ عناصر کے مجموعے کا انتظام اس طرح کرتے ہیں جس سے زیادہ سے زیادہ عنصر تک فوری رسائی اور ترتیب شدہ آرڈر کی موثر دیکھ بھال کی اجازت ملتی ہے۔ یہ مکمل طور پر مخصوص ضروریات اور ڈھیر بنانے کے عمل پر ضروری کنٹرول کی سطح پر منحصر ہے۔