یہ مضمون آپ کو ڈھیر کی ترتیب پر کام کرنے کا ایک مکمل جائزہ پیش کرے گا اور بعد میں ہم جاوا میں ثنائی کے ڈھیر کو نافذ کرنا سیکھیں گے۔
اس مضمون کا ایجنڈا یہ ہے:
چلو شروع کریں!
ڈھیر کی طرح کیا ہے؟
ڈھیر بنیادی طور پر ایک درخت پر مبنی ڈیٹا ڈھانچہ ہوتا ہے۔ اس میں نوڈس ہیں۔ نوڈ کچھ عناصر پر مشتمل ہوتا ہے۔ ہر نوڈ میں ایک عنصر ہوتا ہے۔
نوڈس میں بچے پیدا ہوسکتے ہیں۔ اگر کوئی اولاد نہ ہو تو اسے لیف کہتے ہیں۔
ابتدائیوں کے لئے بصری اسٹوڈیو سبق
دو اصولوں پر عمل کرنا ہے:
- ہر نوڈ کی قدر اس کے بچوں میں جمع کی گئی تمام اقدار کے برابر یا اس کے برابر ہونی چاہئے۔
- اس کی اونچائی کم سے کم ہے۔
ڈھیر نکالنے میں انتہائی موثر ہیںکم سے کم یا سب سے بڑا عنصر
آئیے اب کم سے کم ڈھیر کی طرف چلتے ہیں!
کم از کم ڈھیر
من ہیپ ایک مکمل بائنری درخت ہے جس میں جڑ عنصر کی قدر کسی بھی بچے عنصر سے کم یا اس کے برابر ہوتی ہے۔
من ڈھیر کی نمائندگی
ارر [(i-1) / 2]: یہ پیرنٹ نوڈ واپس کرے گا۔
ارر [(2 * i) + 1]: یہ بائیں بچے کا نوڈ واپس کرے گا۔
ارر [(2 * i) + 2]: یہ صحیح بچے کا نوڈ واپس کرے گا۔
من ہیپ کے کچھ طریقے ہیں:
- داخل کریں (): درخت کے آخر میں ایک نئی کلید شامل کی گئی ہے۔ اگر نئی کلید والدین کی حیثیت سے بڑی ہے تو پھر کچھ کرنے کی ضرورت نہیں ہے ، ورنہ ، ہیپ پراپرٹی کو ترتیب دینے کے ل we ہمیں گزرنا ہوگا۔
- getMin (): اس طریقے سے جڑ عنصر کو واپس کرنے میں مدد ملتی ہے۔
- ایکسٹریکٹ منٹ (): یہ طریقہ کم سے کم واپس کرتا ہےعنصر
میکس ہیپ پر اب آگے بڑھ رہے ہیں۔
زیادہ سے زیادہ ڈھیر
زیادہ سے زیادہ ڈھیر ایک مکمل بائنری درخت ہے جس میں جڑ عنصر کی قدر بچے کے عنصر میں سے کسی ایک سے زیادہ یا اس کے برابر ہوتی ہے۔
زیادہ سے زیادہ ڈھیر کئی طریقوں پر مشتمل ہے!
- داخل کریں (): یہ ڈھیر میں عنصر داخل کرے گا۔
- () کو حذف کریں : یہ ڈھیر سے عنصر کو حذف کردے گا۔
- فائنڈ میکس (): یہ ڈھیر سے زیادہ سے زیادہ عنصر پائے گا۔
- پرنٹ ہیپ (): یہ ڈھیر کا مواد پرنٹ کرے گا
اب میں آپ کو ایک آریھ اور بعد میں جاوا کے ذریعہ ڈھیر لگانے کا طریقہ دکھاتا ہوںکوڈ
جاوا میں ڈھیروں کا نفاذ
ڈایاگرام:
مذکورہ خاکہ جاوا میں ثنائی کے ڈھیر کو ظاہر کرتا ہے۔ جیسا کہ آپ نے سیکھا ہے کہ دو ڈھیر ہیں: من ڈھیر اور زیادہ سے زیادہ ڈھیر ، یہاں ایک آریھ ہے۔
اب ، ہمارے اگلے حصے کی طرف بڑھتے ہوئے ، ہم دیکھیں گے کہ جاوا میں بائنری ڈھیر کو کیسے نافذ کیا جائے۔
کوڈ:
پبلک کلاس بائنری ہیپ {نجی جامد فائنل INT = 2 نجی INT [] ہیپ پرائیویٹ انٹ ہیپ سیپ / ** * یہ ہمارے ڈھیر کو ڈیفالٹ سائز کے ساتھ شروع کردے گی۔ * / عوامی بائنری ہیپ (انٹریٹی صلاحیت) {ہیپ سیز = 0 ہیپ = نئی انٹریٹ [صلاحیت + 1] اری آر ڈس فِل (ڈھیر ، -1)} / ** * یہ چیک کرے گا کہ ڈھیر خالی ہے یا نہیں * پیچیدگی: O ( 1) * / پبلک بولین ایمپٹی () {ریٹرن ہیپس سائز == 0} / ** * اس سے جانچ پڑتال ہوگی کہ ڈھیر بھرا ہوا ہے یا نہیں * پیچیدگی: O (1) * / پبلک بولین فل () {ریٹرن ہیپ سیز == ہیپ .پیلینٹی} پرائیویٹ انٹ والدین (انٹری آئ) i ریٹرن (آئی -1) / ڈی} پرائیویٹ انٹرو کٹچلڈ (انٹریٹ آئ ، انٹ کےٹی کے) {ریٹرن ڈی * آئی + کے} / ** * یہ ڈھیر میں نیا عنصر داخل کرے گا * پیچیدگی: O (لاگ ن) * بدترین صورتحال کے طور پر ، ہمیں جڑ تک عبور کرنے کی ضرورت ہے * / / عوامی باطل داخل (انٹ x)) اگر (isFull ()) نیا NoSuchElementException پھینک دیں ('ڈھیر بھرا ہوا ہے ، داخل کرنے کے لئے جگہ نہیں ہے) نیا عنصر ') ہیپ [ہیپ سیز ++] = ایکس ہیپیفایپ (ہیپ سیز -1)} / ** * یہ عنصر کو ایکس ایکس میں حذف کردے گا * پیچیدگی: او (لاگ ن) * * / پبلک انٹ ڈیلیٹ (انٹ ایکس ایکس) {اگر (آئسپیٹی ہے) ()) نیا NoSuchElementException پھینک دیں ('ڈھیر خالی ہے ، حذف کرنے کے لئے کوئی عنصر نہیں ہے') int key = heap [x] heap [x] = heapSize -1] heapSize-- heapifyDown (x) retu rn key} / ** * یہ طریقہ عنصر داخل کرتے وقت ڈھیر کی خاصیت کو برقرار رکھنے کے لئے استعمال ہوتا ہے۔ * * / نجی باطل heapifyUp (INT) {int temp = heap [i] جبکہ (i> 0 && <<> ڈھیر [والدین (i)]) ap ڈھیر [i] = ڈھیر [والدین (i)] i = والدین (i) ap ڈھیر [i] = temp} / ** * یہ طریقہ عنصر کو حذف کرتے وقت ڈھیر کی خاصیت کو برقرار رکھنے کے لئے استعمال ہوتا ہے۔ * * / نجی باطل heapifyDown (IN i) {انٹیل چائلڈ int temp = ہیپ [i] جبکہ (kthChild (i، 1)ہیپ [رائٹ چیلڈ]؟ لیفٹ چائلڈ: رائٹ چائلڈ} / ** * یہ طریقہ ڈھیر کے تمام عنصر کو پرنٹ کرنے کے لئے استعمال کیا جاتا ہے * * / پبلک باطل پرنٹ ہاپ (). سسٹم آؤٹ.پرینٹ ('این ہیپ =') کے لئے (انٹراٹ I = 0 i) اس کے ساتھ ، ہم جاوا میں بائنری ہیپ پر اس مضمون کو ختم کرتے ہیں۔ چیک کریں ایڈوریکا کے ذریعہ ، ایک قابل اعتماد آن لائن سیکھنے والی کمپنی جس کی دنیا بھر میں 250،000 سے زیادہ مطمئن سیکھنے والوں کا نیٹ ورک موجود ہے۔ ایڈورکا کا جاوا J2EE اور SOA ٹریننگ اور سرٹیفیکیشن کورس طلباء اور پیشہ ور افراد کے لئے ڈیزائن کیا گیا ہے جو جاوا ڈویلپر بننا چاہتے ہیں۔ کورس آپ کو جاوا پروگرامنگ میں آغاز فراہم کرنے اور ہائبرنیٹ اینڈ اسپرنگ جیسے جاوا کے مختلف فریم ورکوں کے ساتھ ساتھ جاوا کے دونوں بنیادی خیالات کے ساتھ تربیت دینے کے لئے ڈیزائن کیا گیا ہے۔
ہمارے لئے ایک سوال ہے؟ برائے کرم اس 'جاوا ارا لسٹ' بلاگ کے تبصرے سیکشن میں اس کا تذکرہ کریں اور ہم جلد سے جلد آپ کے پاس مل جائیں گے۔