كيفية تنفيذ تصنيف الإدراج في C مع المثال

Kyfyt Tnfydh Tsnyf Aladraj Fy C M Almthal



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

ما هو تصنيف الإدراج في C؟

تتطابق طريقة الفرز التي تسمى بفرز الإدراج مع كل عنصر على حدة مع العناصر المجاورة أثناء تكراره عبر مصفوفة. عنصر أصغر من العنصر السابق يتم إدراجه في المصفوفة الفرعية التي تم فرزها في الموقع المناسب.

لمزيد من التوضيح ، لقد عرضت مثالاً نظرت فيه إلى مصفوفة من أربعة عناصر في مصفوفة مثل arr [] = {5، 4، 60، 9} ونريد فرز هذا العنصر بترتيب تصاعدي باستخدام فرز الإدراج. تشرح التفاعلات التالية التشغيل الجاف الكامل لفرز الإدراج:







التكرار 1

5 4 60 9

لدينا مصفوفة مثل arr [5، 4، 60، 9] الآن ، في التكرار الأول لفرز الإدراج ، نقارن أولاً العنصرين الأولين مثل 5 و 4 ، نظرًا لأن arr [5] هو arr [4] لذا نقوم بتبديلها لفرز المصفوفة بترتيب تصاعدي. الآن ، ستكون المصفوفة:



4 5 60 9

التكرار 2

4 5 60 9

في التكرار الثاني ، نقارن العنصرين التاليين ، مثل arr [5] مع arr [60].



نظرًا لأن arr [5]





4 5 60 9

التكرار 3

4 5 60 9

كما في التكرار الثالث ، نطابق العنصرين الثالث والرابع مثل arr [60] مع arr [9].

الآن ، نرى أن arr [60]> arr [9] لذلك يحدث التبادل ، ثم يتم ترتيب المصفوفة بترتيب تصاعدي.



4 5 9 60

هذه هي الطريقة التي يعمل بها فرز الإدراج في لغة C التي تفرز عنصر مصفوفة بسهولة بترتيب تصاعدي أو تنازلي.

مخطط انسيابي لفرز الإدراج

فيما يلي مخطط انسيابي لخوارزمية فرز الإدراج:

تنفيذ مثال لفرز الإدراج في ج

نحتاج أولاً إلى مجموعة من العناصر التي يجب فرزها بترتيب تنازلي وتصاعدي لإنشاء طريقة فرز الإدراج في C. افترض لأغراض هذا المثال أننا نتعامل مع مجموعة من الأرقام {5 ، 4 ، 60 ، 9} :

# تضمين

فارغ عمليات الإدراج ( int آر آر 1 [ ] و int ن ) {

int أنا و ي و مفتاحي ؛

// for loop يستخدم لتكرار قيم i من 1 إلى i

ل ( أنا = 1 ؛ أنا < ن ؛ أنا ++ ) {

مفتاحي = آر آر 1 [ أنا ] ؛

ي = أنا - 1 ؛

بينما ( ي > = 0 && آر آر 1 [ ي ] > مفتاحي ) {

آر آر 1 [ ي + 1 ] = آر آر 1 [ ي ] ؛

ي = ي - 1 ؛

}

آر آر 1 [ ي + 1 ] = مفتاحي ؛

}

}

فارغ عمليات الإدراج ( int arr2 [ ] و int م ) {

int أنا و ي و مفتاحي ؛

// يتم إنشاء حلقة for أخرى لتكرار قيم i من 1 إلى i

ل ( أنا = 1 ؛ أنا < م ؛ أنا ++ ) {

مفتاحي = arr2 [ أنا ] ؛

ي = أنا - 1 ؛

بينما ( ي > = 0 && arr2 [ ي ] < مفتاحي ) {

arr2 [ ي + 1 ] = arr2 [ ي ] ؛

ي = ي - 1 ؛

}

arr2 [ ي + 1 ] = مفتاحي ؛

}

}

int رئيسي ( ) {

// إدراج-فرز بترتيب تنازلي

int my_arr [ ] = { 5 و 4 و 60 و 9 } ؛ // تهيئة my_arr [] الذي يحتوي على أربع قيم

int م = حجم ( my_arr ) / حجم ( my_arr [ 0 ] ) ؛

عمليات الإدراج ( my_arr و م ) ؛

printf ( 'مصفوفة مرتبة بترتيب تنازلي:' ) ؛

ل ( int أنا = 0 ؛ أنا < م ؛ أنا ++ )

printf ( '٪د ' و my_arr [ أنا ] ) ؛

printf ( ' ' ) ؛

// إدراج-فرز بترتيب تصاعدي

int ن = حجم ( my_arr ) / حجم ( my_arr [ 0 ] ) ؛

عمليات الإدراج ( arr2 و ن ) ؛

printf ( 'مصفوفة مرتبة بترتيب تصاعدي:' ) ؛

ل ( int أنا = 0 ؛ أنا < ن ؛ أنا ++ )

printf ( '٪د ' و my_arr [ أنا ] ) ؛

printf ( ' ' ) ؛

يعود 0 ؛

}

في هذا الرمز ، طريقتان عمليات الإدراج ، و عمليات الإدراج خذ قيم المصفوفة my_arr [] . يستخدم الرمز بعد ذلك ملف لحلقة لتكرار عناصر المصفوفة.

نسمي كلتا الدالتين في الوظيفة الرئيسية بمجرد قيامهما بفرز المصفوفات بترتيب تنازلي وتصاعدي. بعد ذلك ، تُستخدم حلقات for لطباعة المصفوفة المرتبة.

عند تشغيل هذا البرنامج ، يتم وضع المخرجات المتوقعة أدناه:

خاتمة

يعد فرز الإدراج طريقة سريعة وسهلة لفرز مصفوفة إما في تسلسل تنازلي أو تصاعدي. بالنسبة لمجموعات البيانات الصغيرة ، تعمل تقنية الفرز هذه بشكل جيد. كما ترى في الدليل أعلاه ، من السهل تنفيذ مثال على برنامج C لفهم فرز الإدراج بترتيب تنازلي وتصاعدي.