گولانگ ترتیب دیں سلائس کی مثالیں۔

Gwlang Trtyb Dy Slays Ky Mthaly



چھانٹنا ایک بنیادی پروگرامنگ آپریشن ہے جس میں عناصر کو ایک خاص ترتیب میں رکھنا شامل ہے۔ ترتیب دینے والا پیکیج، جس میں Go کی آفیشل لائبریری دستیاب کرتی ہے، سلائسوں کو تیزی سے ترتیب دینے کے لیے کئی فنکشنز پر مشتمل ہے۔ ٹکڑوں کو چھانٹنا بہت سی ایپلی کیشنز میں ایک عام کام ہے، جس میں پریزنٹیشن کے لیے ڈیٹا کو ترتیب دینے سے لے کر تلاش کے الگورتھم کو بہتر بنانے تک۔ یہ مضمون چھانٹنے کی مختلف تکنیکوں کو دریافت کرتا ہے اور ترتیب پیکج کا استعمال کرتے ہوئے Go میں ان کے استعمال کو ظاہر کرتا ہے۔

مثال 1: گولانگ سلائس کو صعودی ترتیب میں ترتیب دیں۔

'sort.Slice()' فنکشن Go میں سب سے اہم فنکشن ہے جو سلائس کے عناصر کو صعودی ترتیب یا نزولی ترتیب میں دوبارہ ترتیب دیتا ہے۔ مندرجہ ذیل مثال کو ذہن میں رکھیں جہاں سلائس کو صعودی ترتیب میں ترتیب دیا گیا ہے:

پیکج مرکزی
درآمد (
'fmt'
'ترتیب دیں'
)
func مرکزی () {
ایون سلائس := [ ] int { 10 ، 2 ، 8 ، 4 ، 0 ، 6 }
ایف ایم ٹی . پرنٹ ایل این ( 'غیر ترتیب شدہ ٹکڑا:' ، ایون سلائس )
ترتیب دیں . سلائس ( ایون سلائس ، func ( میں ، جے int ) bool {
واپسی ایون سلائس [ میں ] < بھی سلائس [ جے ]
})
ایف ایم ٹی . پرنٹ ایل این ( 'حل شدہ ٹکڑا:' ، ایون سلائس )
}

مین () فنکشن کے شروع میں، ہم ایون سلائس سلائس کو {10, 2, 8, 4, 0, 6} ویلیوز کے ساتھ ڈیفائن کرتے ہیں۔ یہ ٹکڑا یکساں نمبروں کے مجموعہ کی نمائندگی کرتا ہے جو ابتدائی طور پر غیر ترتیب شدہ ہیں۔ ایون سلائس سلائس کو ترتیب دینے کے لیے، سلائس کے ساتھ sort.Slice() فنکشن کا استعمال کیا جاتا ہے۔ sort.Slice() فنکشن کے اندر، ایک ترتیب دینے والا فنکشن دلیل کے طور پر فراہم کیا جاتا ہے۔ یہ فنکشن سلائس کے دو عناصر کا 'i' اور 'j' انڈیکس پر موازنہ کرکے ترتیب ترتیب کا تعین کرتا ہے۔ اگر evenSlice[i] evenSlice[j] سے کم ہے تو یہ درست ہو جاتا ہے۔ دوسری صورت میں، یہ غلط واپس آتا ہے. sort.Slice() فنکشن 'evenSlice' کے عناصر کو صعودی ترتیب میں دوبارہ ترتیب دینے کے لیے اس موازنہ فنکشن کا استعمال کرتا ہے۔







صعودی ترتیب میں ترتیب دیے گئے ٹکڑوں کے نتائج درج ذیل آؤٹ پٹ اسکرین میں تیار کیے جاتے ہیں:





مثال 2: گولانگ ترتیب دیں پارٹ سلائس

اگلا، Go میں sort.Slice() فنکشن کا استعمال کرتے ہوئے صعودی ترتیب میں مخصوص سلائس کے ذیلی سلائس پر چھانٹی کا اطلاق ہوتا ہے۔





پیکج مرکزی
درآمد (
'fmt'
'ترتیب دیں'
)
func مرکزی () {
n := [ ] int { 9 ، 7 ، 3 ، 5 }
شروع := 0
اختتام := 3
ترتیب دیں . سلائس ( n [ شروع : اختتام func ( میں ، جے int ) bool {
واپسی n [ شروع + میں ] < n [ شروع + جے ]
})
ایف ایم ٹی . پرنٹ ایل این ( n )
}

ابتدائی طور پر، ہم [9, 7, 3, 5] اقدار کے ساتھ 'n' سلائس بناتے ہیں۔ مزید برآں، دو متغیرات، 'شروع' اور 'اختتام' بالترتیب 0 اور 3 پر سیٹ کیے گئے ہیں۔ یہ متغیرات 'n' سلائس میں اشاریہ جات کی حد کی وضاحت کرتے ہیں جنہیں ترتیب دیا جائے گا۔ 'sort.Slice()' فنکشن کو پھر سب سلائس 'n[start:end]' کے ساتھ پہلی دلیل کے طور پر کہا جاتا ہے۔ یہ ذیلی سلائس مخصوص رینج کے اندر 'n' کے عناصر پر مشتمل ہے۔ اس کے بعد، sort.Slice() فنکشن کے اندر دوسری دلیل کے طور پر ایک ترتیب دینے والا فنکشن دیا جاتا ہے۔

یہاں، وہ فنکشن دو انڈیکس حاصل کرتا ہے، 'i' اور 'j'، جو ذیلی سلائس کے اندر موجود عناصر کی نمائندگی کرتا ہے۔ ذیلی سلائس کے اندر موجود عناصر کا موازنہ کرنے کے لیے، چھانٹنے کا فنکشن اسٹارٹ کا استعمال کرتے ہوئے اصل سلائس میں متعلقہ عناصر تک رسائی حاصل کرتا ہے۔ آفسیٹ۔ یہ n[start+i] اور n[start+j] کا موازنہ کرتا ہے۔ اگلا، sort.Slice() فنکشن فراہم کردہ ترتیب دینے کے فنکشن کو استعمال کرتا ہے تاکہ ذیلی سلائس کے اندر عناصر کو صعودی ترتیب میں ترتیب دیا جائے۔



درج ذیل آؤٹ پٹ دکھاتا ہے کہ مخصوص رینج کے اندر موجود عناصر (شروع سے آخر تک) کو ترتیب دیا گیا ہے، اور رینج سے باہر کے عناصر میں کوئی تبدیلی نہیں کی گئی ہے:

مثال 3: Sort.Ints() فنکشن کا استعمال کرتے ہوئے Golang Sort Integer Slice

مزید برآں، انٹیجرز کے سلائسز کو ترتیب دینے کے لیے سب سے زیادہ آسان sort.Ints() فنکشن ہے جس کو اپنی مرضی کے مطابق چھانٹنے کے طریقوں کو لاگو کرنے کی ضرورت نہیں ہے۔ یہ انٹیجر سلائسز پر براہ راست کام کرتا ہے اور جگہ جگہ چھانٹی کرتا ہے۔ درج ذیل پروگرام مخصوص عدد کو ترتیب دیتا ہے:

پیکج مرکزی
درآمد (
'fmt'
'ترتیب دیں'
)
func مرکزی () {
IntSlice := [ ] int { 10 ، 13 ، پندرہ ، گیارہ ، 14 ، 12 }
ایف ایم ٹی . پرنٹ ایل این ( 'غیر ترتیب شدہ ٹکڑا:' ، IntSlice )
ترتیب دیں . انٹس ( IntSlice )
ایف ایم ٹی . پرنٹ ایل این ( 'حل شدہ ٹکڑا:' ، IntSlice )
}

سب سے پہلے، ہم [10, 13, 15, 11, 14, 12] اقدار کے ساتھ 'IntSlice' سلائس کا اعلان اور آغاز کرتے ہیں جو انٹیجرز کے مجموعہ کی نمائندگی کرتے ہیں جو ابتدائی طور پر غیر ترتیب شدہ ہیں۔ پھر، sort.Ints() فنکشن کو 'IntSlice' سلائس کے ساتھ 'IntSlice' کو ترتیب دینے کے لیے دلیل کے طور پر بلایا جاتا ہے۔ اس معاملے میں sort.Ints() فنکشن اندرونی طور پر سلائس کے ہر حصے کو ایک بہتر ترتیب دینے والے الگورتھم کے مطابق ترتیب دیتا ہے۔ یہ اصل سلائس کو براہ راست تبدیل کرتا ہے، اس کے عناصر کو ایک ترتیب شدہ ترتیب میں دوبارہ ترتیب دیتا ہے۔

درج ذیل آؤٹ پٹ پہلے ظاہر کرتا ہے کہ غیر ترتیب شدہ سلائس پہلے ظاہر ہوتا ہے، اس کے بعد ترتیب شدہ سلائس:

مثال 4: گولانگ ترتیب دیں سٹرنگ سلائس

Go sort.Strings() sort پیکج کا فنکشن بھی پیش کرتا ہے جو ایک مخصوص ترتیب میں تاروں کے ٹکڑے کو ترتیب دینے کے لیے استعمال ہوتا ہے۔ یہاں، درج ذیل پروگرام تاروں کے ٹکڑے کو ترتیب دینے میں مدد کرتا ہے:

پیکج مرکزی
درآمد (
'fmt'
'ترتیب دیں'
)
func مرکزی () {
strSl := [ ] تار { 'گولن' , 'ازگر' , 'جاوا' , 'پرل' , 'ٹائپ اسکرپٹ' }
ترتیب دیں . ڈور ( strSl )
ایف ایم ٹی . پرنٹ ایل این ( strSl )
}

ہم نے پہلے 'strSl' سلائس کو ['golang', 'python', 'java', 'perl', 'typescript'] ویلیو کے ساتھ قائم کیا جو ترتیب نہیں دی گئی ہیں۔ اس کے بعد، ہم 'strSl' سلائس کو sort.Strings() فنکشن کے ساتھ ترتیب دیتے ہیں جو سلائس کے عناصر کو لغت کی ترتیب میں ترتیب دیتا ہے۔ یہ فنکشن اصل سلائس کو براہ راست تبدیل کرتا ہے، اس کے عناصر کو ان کی ASCII اقدار کی بنیاد پر ترتیب شدہ ترتیب میں دوبارہ ترتیب دیتا ہے۔

آؤٹ پٹ سٹرنگ سلائس کو صعودی انداز میں ترتیب دیتا ہے جیسا کہ درج ذیل میں دکھایا گیا ہے۔

مثال 5: IntAreSort() فنکشن کا استعمال کرتے ہوئے گولانگ چیک ترتیب دیں

تاہم، Go کے sort.IntsAreSorted() فنکشن کے ساتھ، ہم چیک کر سکتے ہیں کہ آیا انٹیجرز کا دیا ہوا ٹکڑا صعودی ترتیب میں ترتیب دیا گیا ہے یا نہیں۔ دیے گئے سلائس کے لیے IntAreSort() فنکشن کے مندرجہ ذیل مثال پروگرام پر غور کریں:

پیکج مرکزی
درآمد (
'fmt'
'ترتیب دیں'
)
func مرکزی () {
ایس ایل := [ ] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
ایف ایم ٹی . پرنٹ ایل این ( 'سلائسز:' )
ایف ایم ٹی . پرنٹ ایل این ( 'غیر ترتیب شدہ سلائس:' , ایس ایل )
نتیجہ := ترتیب دیں . IntsAreSorted ( ایس ایل )
ایف ایم ٹی . پرنٹ ایل این ( ' \n نتیجہ:' )
ایف ایم ٹی . پرنٹ ایل این ( 'کیا سلائس کو ترتیب دیا گیا ہے؟:' , نتیجہ )
}

سب سے پہلے، بے ترتیب عدد کے ایک غیر ترتیب شدہ سلائس کو 'sl' کے طور پر بیان کیا گیا ہے۔ یہ ٹکڑا کسی خاص ترتیب میں عدد کا مجموعہ نہیں رکھتا۔ اگلا، ہم sort.IntsAreSorted() فنکشن کو کال کرتے ہیں اور دلیل کے طور پر 'sl' سلائس پاس کرتے ہیں۔ یہ فنکشن ایک بولین نتیجہ فراہم کرتا ہے جو اس بات کی نشاندہی کرتا ہے کہ آیا سلائس ان پٹ کو صعودی ترتیب میں ترتیب دیا گیا ہے یا نہیں۔ اس کے بعد، fmt.Println() فنکشن نتائج کو پرنٹ کرتا ہے جس سے پتہ چلتا ہے کہ آیا دی گئی سلائس کو چھانٹی ہوئی ہے یا نہیں لوٹی گئی بولین ویلیو کی بنیاد پر۔

آؤٹ پٹ انٹیجرز کے سلائس کے ترتیب دینے کے لیے غلط دکھاتا ہے کیونکہ یہ غیر ترتیب شدہ ہے:

مثال 6: گولانگ ریورس سورٹ سلائس

مزید، Go میں sortReverse() اور sortStringSlice() فنکشنز کا استعمال کرتے ہوئے، ہم تاروں کے ایک ٹکڑے کو ریورس کر سکتے ہیں۔ درج ذیل پروگرام sort.Reverse() فنکشن کے کام کو ظاہر کرتا ہے:

پیکج مرکزی
درآمد (
'fmt'
'ترتیب دیں'
)
func مرکزی () {
vowelSlice := [ ] تار { 'یہ ہے' , 'a' , 'میں' , 'میں' , 'او' }
ایف ایم ٹی . پرنٹ ایل این ( 'چھانٹنے سے پہلے :' , vowelSlice )
ترتیب دیں . ترتیب دیں ( ترتیب دیں . معکوس ( ترتیب دیں . سٹرنگ سلائس ( vowelSlice )))
ایف ایم ٹی . پرنٹ ایل این ( 'چھانٹنے کے بعد :' , vowelSlice )
}

ہم 'vowelSlice' سٹرنگ کے ایک ٹکڑے کی وضاحت کرتے ہوئے شروع کرتے ہیں جس میں 'e'، 'a'، 'i'، 'u' اور 'o' شامل ہوتے ہیں۔ سٹرنگز کے مخصوص سلائس کا ابتدائی مواد سب سے پہلے 'پرنٹ' فنکشن کا استعمال کرتے ہوئے پرنٹ کیا جاتا ہے۔ اس کے بعد، ترتیب دینے کا عمل sort.Sort() فنکشن کے ساتھ sort.Reverse() اور sort.StringSlice() فنکشنز کو بطور دلیل استعمال کرتے ہوئے انجام دیا جاتا ہے۔ یہاں، 'sort.Reverse()' ایک نئی قسم بناتا ہے جو عناصر کی ترتیب کو الٹ دیتا ہے۔ یہ 'sort.StringSlice' قسم کو اپنی دلیل کے طور پر لیتا ہے جو vowelSlice کو ترتیب دینے والی قسم میں تبدیل کرتا ہے۔

یہاں آؤٹ پٹ حروف تہجی کے الٹے ترتیب میں سروں کو دکھاتا ہے:

نتیجہ

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