أمثلة شرائح فرز جولانج

Amthlt Shrayh Frz Jwlanj



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

مثال 1: فرز Golang بترتيب تصاعدي

وظيفة 'sort.Slice ()' هي الوظيفة الأولى في Go التي تعيد ترتيب عناصر الشريحة بترتيب تصاعدي أو تنازلي. ضع في الاعتبار الرسم التوضيحي التالي حيث يتم ترتيب الشريحة بترتيب تصاعدي:

طَرد رئيسي
يستورد (
'FMT'
'نوع'
)
func رئيسي () {
حتى شريحة : = [] int { 10 و 2 و 8 و 4 و 0 و 6 }
FMT . Println ( 'شريحة غير مرتبة:' و حتى شريحة )
نوع . شريحة ( حتى شريحة و func ( أنا و ي int ) منطقي {
يعود حتى شريحة [ أنا ] <حتى شريحة [ ي ]
})
FMT . Println ( 'شريحة مرتبة:' و حتى شريحة )
}

في بداية الدالة main () ، نحدد شريحة الشرائح الزوجية بقيم {10 ، 2 ، 8 ، 4 ، 0 ، 6}. تمثل هذه الشريحة مجموعة من الأرقام الزوجية التي لم يتم فرزها في البداية. لفرز شريحة حتى شريحة ، يتم استخدام الدالة sort.Slice () مع الشريحة. داخل دالة sort.Slice () ، يتم توفير دالة الفرز كوسيطة. تحدد هذه الوظيفة ترتيب الفرز من خلال مقارنة عنصري الشريحة عند مؤشرات 'i' و 'j'. إذا كانت evenSlice [i] أقل من evenSlice [j] ، فإنها ترجع صحيحًا ؛ وإلا فإنها ترجع خطأ. تستخدم الدالة sort.Slice () وظيفة المقارنة هذه لإعادة ترتيب عناصر شريحة 'evenSlice' بترتيب تصاعدي.







يتم إنشاء نتائج الشريحة التي تم فرزها بترتيب تصاعدي في شاشة الإخراج التالية:





مثال 2: فرز Golang Part Slice

بعد ذلك ، يتم تطبيق الفرز على الشريحة الفرعية للشريحة المحددة بترتيب تصاعدي باستخدام الدالة sort.Slice () في Go.





طَرد رئيسي
يستورد (
'FMT'
'نوع'
)
func رئيسي () {
ن : = [] int { 9 و 7 و 3 و 5 }
يبدأ : = 0
نهاية : = 3
نوع . شريحة ( ن [ يبدأ : نهاية ] ، func ( أنا و ي int ) منطقي {
يعود ن [ يبدأ + أنا ] [ يبدأ + ي ]
})
FMT . Println ( ن )
}

في البداية ، نقوم بإنشاء شريحة 'n' بقيم [9 ، 7 ، 3 ، 5]. بالإضافة إلى ذلك ، تم تعيين متغيرين ، 'البداية' و 'النهاية' ، على 0 و 3 ، على التوالي. تحدد هذه المتغيرات نطاق المؤشرات في شريحة 'n' التي سيتم فرزها. يتم استدعاء الوظيفة 'sort.Slice ()' مع الشريحة الفرعية 'n [start: end]' كوسيطة أولى. تحتوي هذه الشريحة الفرعية على عناصر 'n' ضمن النطاق المحدد. بعد ذلك ، يتم إعطاء دالة الفرز كوسيطة ثانية داخل دالة sort.Slice ().

هنا ، تتلقى هذه الوظيفة مؤشرين ، 'i' و 'j' ، اللذين يمثلان العناصر داخل الشريحة الفرعية. لمقارنة العناصر داخل الشريحة الفرعية ، تصل وظيفة الفرز إلى العناصر المقابلة في الشريحة الأصلية باستخدام البداية offset ، تقارن n [start + i] و n [start + j] ثم تستخدم الدالة sort.Slice () وظيفة الفرز المتوفرة لإعادة ترتيب العناصر داخل الشريحة الفرعية بترتيب تصاعدي.



يعرض الإخراج التالي أن العناصر داخل النطاق المحدد (من البداية إلى النهاية 1) مرتبة ، والعناصر الموجودة خارج النطاق تظل كما هي:

مثال 3: فرز Golang لعدد صحيح باستخدام وظيفة Sort.Ints ()

علاوة على ذلك ، فإن الطريقة الأكثر ملاءمة لفرز شرائح الأعداد الصحيحة هي دالة sort.Ints () دون الحاجة إلى تنفيذ طرق الفرز المخصصة. إنه يعمل مباشرة على شرائح عدد صحيح ويقوم بفرز موضعي. يقوم البرنامج التالي بفرز الأعداد الصحيحة المحددة:

طَرد رئيسي
يستورد (
'FMT'
'نوع'
)
func رئيسي () {
إنتليس : = [] int { 10 و 13 و خمسة عشر و أحد عشر و 14 و 12 }
FMT . Println ( 'شريحة غير مرتبة:' و إنتليس )
نوع . إنتس ( إنتليس )
FMT . Println ( 'شريحة مرتبة:' و إنتليس )
}

أولاً ، نعلن ونهيئ شريحة 'IntSlice' بقيم [10 ، 13 ، 15 ، 11 ، 14 ، 12] التي تمثل مجموعة من الأعداد الصحيحة التي لم يتم فرزها في البداية. ثم يتم استدعاء الدالة sort.Ints () بشريحة 'IntSlice' كوسيطة لفرز 'IntSlice'. تقوم الدالة sort.Ints () في هذه الحالة بفرز كل جزء من أجزاء الشريحة داخليًا وفقًا لخوارزمية فرز محسّنة. يقوم بتعديل الشريحة الأصلية مباشرة ، وإعادة ترتيب عناصرها في ترتيب تم فرزها.

يُظهر الإخراج التالي أولاً أن الشريحة غير المفرزة تُعرض أولاً ، متبوعة بالشريحة التي تم فرزها:

مثال 4: Golang Sort String Slice

تقدم Go أيضًا وظيفة sort.Strings () لحزمة الفرز التي تُستخدم لفرز شريحة من السلاسل بترتيب معين. هنا ، يساعد البرنامج التالي في فرز شريحة الأوتار:

طَرد رئيسي
يستورد (
'FMT'
'نوع'
)
func رئيسي () {
strSl : = [] خيط { 'جولان' و 'الثعبان' و 'جافا' و 'بيرل' و 'مطبوعة' }
نوع . سلاسل ( strSl )
FMT . Println ( strSl )
}

أنشأنا أولاً شريحة 'strSl' بقيم ['golang' و 'python' و 'java' و 'perl' و 'typecript'] التي لم يتم فرزها. بعد ذلك ، نقوم بفرز شريحة 'strSl' باستخدام الدالة sort.Strings () التي تفرز عناصر الشريحة بترتيب معجمي. تقوم هذه الوظيفة بتعديل الشريحة الأصلية مباشرةً ، وإعادة ترتيب عناصرها في ترتيب تم فرزها بناءً على قيم ASCII الخاصة بهم.

يفرز الإخراج شريحة السلسلة بطريقة تصاعدية كما هو معروض في ما يلي:

مثال 5: تحقق Golang من فرز الشرائح باستخدام وظيفة IntAreSort ()

ومع ذلك ، باستخدام دالة sort.IntsAreSorted () لـ Go ، يمكننا التحقق مما إذا كانت شريحة معينة من الأعداد الصحيحة مرتبة بترتيب تصاعدي أم لا. ضع في اعتبارك البرنامج المثال التالي لوظيفة IntAreSort () للشريحة المحددة:

طَرد رئيسي
يستورد (
'FMT'
'نوع'
)
func رئيسي () {
sl : = [] int { - 33 و 105 و - 42 و 59 و 18 و 0 و - 3 }
FMT . Println ( 'الشرائح:' )
FMT . Println ( 'شريحة غير مرتبة:' و sl )
نتيجة : = نوع . IntsAreSorted ( sl )
FMT . Println ( ' نتيجة:' )
FMT . Println ( 'هل أعطيت شريحة مرتبة ؟:' و نتيجة )
}

أولاً ، يتم تعريف شريحة غير مرتبة من الأعداد الصحيحة العشوائية على أنها 'sl'. تحتوي هذه الشريحة على مجموعة من الأعداد الصحيحة بدون ترتيب معين. بعد ذلك ، نسمي الدالة sort.IntsAreSorted () ونمرر شريحة 'sl' كوسيطة. توفر هذه الوظيفة نتيجة منطقية تشير إلى ما إذا كان إدخال الشريحة مرتبًا بترتيب تصاعدي أم لا. بعد ذلك ، تطبع الدالة fmt.Println () النتائج التي تُخرج ما إذا كانت الشريحة المحددة مرتبة أم لا بناءً على القيمة المنطقية التي تم إرجاعها.

يعرض الناتج خطأ لترتيب الفرز لشريحة من الأعداد الصحيحة لأنها غير مرتبة:

مثال 6: شريحة الترتيب العكسي لـ Golang

علاوة على ذلك ، باستخدام الدالتين sortReverse () و sortStringSlice () من حزمة الفرز في Go ، يمكننا عكس فرز شريحة من السلاسل. يوضح البرنامج التالي طريقة عمل الدالة sort.Reverse ():

طَرد رئيسي
يستورد (
'FMT'
'نوع'
)
func رئيسي () {
حرف علة : = [] خيط { 'إنها' و 'أ' و 'أنا' و 'في' و 'يا' }
FMT . Println ( 'قبل الفرز:' و حرف علة )
نوع . نوع ( نوع . يعكس ( نوع . StringSlice ( حرف علة )))
FMT . Println ( 'بعد الفرز:' و حرف علة )
}

نبدأ بتعريف شريحة من سلسلة حروف العلة 'vowelSlice' التي تحتوي على أحرف العلة 'e' و 'a' و 'i' و 'u' و 'o'. تتم طباعة المحتوى الأولي لشريحة السلاسل المحددة أولاً باستخدام وظيفة 'طباعة'. بعد ذلك ، يتم تنفيذ عملية الفرز باستخدام الدالة sort.Sort () مع الدالتين sort.Reverse () و sort.StringSlice () كوسائط. هنا ، يُنشئ 'sort.Reverse ()' نوعًا جديدًا يعكس ترتيب العناصر. يأخذ النوع “sort.StringSlice” كوسيطه الذي يحول حرف العلة إلى نوع قابل للفرز.

يعرض الإخراج هنا أحرف العلة بترتيب أبجدي عكسي:

خاتمة

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