كيفية فرز المصفوفات باستخدام qsort () في لغة C.

Kyfyt Frz Almsfwfat Bastkhdam Qsort Fy Lght C



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

يوضح هذا المبدأ التوجيهي فرز المصفوفات باستخدام qsort () تعمل في C وتساعدك أيضًا على فهمها من خلال أكواد المثال C.

qsort () في C.

مكتبة C القياسية تسهل علينا qsort () وظيفة تستخدم ببساطة لفرز المصفوفات. إنها وظيفة محسّنة وسريعة للغاية يمكن أن تعمل مع أي مجموعة من أنواع البيانات.







ملف الرأس باستخدام qsort () في C

ال qsort () يتم تعريف الطريقة داخل stdlib.h header والذي يجب تحديده قبل التنفيذ qsort () في برنامج C.



# تضمين

إعلان qsort ()

إعلان qsort () الوظيفة على النحو التالي:



فارغ qsort ( فارغ * قاعدة و عدد_العناصر و حجم_العنصر و وظيفة المقارنة )

معلمات دالة qsort ()

معلمات qsort () الوظيفة هي:





قاعدة: المؤشر إلى العنصر الأول من المصفوفة المراد فرزها.

عدد_العناصر: عدد العناصر في المصفوفة المراد فرزها.



حجم_العنصر: الحجم بالبايت لكل عنصر في المصفوفة.

مقارنة_وظيفة: مؤشر إلى دالة مقارنة تحدد ترتيب العناصر.

ما هي وظيفة المقارنة في qsort ()

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

كيف يعمل qsort في C

ال qsort () تعمل الوظيفة بالطريقة التالية:

ملحوظة: نحن هنا نفكر في ملف int arr [] = {5، 2، 8، 3، 1، 9} ؛

1: في البداية ، سيتم استدعاء وظيفة qsort بالمعلمات التالية:

qsort ( آر و 6 و حجم ( int ) و وظيفة المقارنة ) ؛

حيث arr هو مؤشر المصفوفة ، 6 هو عدد العناصر في المصفوفة ، sizeof (int) هو حجم كل عنصر في المصفوفة ، ودالة المقارنة هي الوظيفة التي تحدد الترتيب الذي يتم به فرز العناصر.

2: تحدد وظيفة qsort عنصرًا محوريًا. لنفترض أنه يختار 3 كمحور.

3: تقسم الدالة qsort المصفوفة إلى صفيفتين فرعيتين: {2 ، 1} و {5 ، 8 ، 9}. تحتوي المصفوفة الفرعية الأولى على عناصر أقل من المحور أو مساوية له ، بينما تحتوي المصفوفة الفرعية الثانية على عناصر أكبر من المحور.

4: تستدعي الدالة qsort نفسها بشكل متكرر على كل من المصفوفات الفرعية.

5: تحدد وظيفة qsort المحاور لكل من المصفوفات الفرعية. لنفترض أنه حدد 1 و 8 كمحور.

6: تقسم وظيفة qsort كل مصفوفة فرعية إلى صفيفتين فرعيتين ، وتستدعي نفسها بشكل متكرر على كل من هذه المصفوفات الفرعية.

7: تدمج وظيفة qsort المصفوفات الفرعية التي تم فرزها مرة أخرى في مصفوفة مرتبة واحدة: {1 ، 2} و {5 ، 8 ، 9} تصبح {1 ، 2 ، 5 ، 8 ، 9}.

8: يتم إرجاع المصفوفة التي تم فرزها بالكامل.

تنفيذ qsort في البرمجة سي

يوضح الكود التالي تنفيذ qsort تعمل في برمجة C.

# تضمين

# تضمين

int يقارن ( مقدار ثابت فارغ * أ 1 و مقدار ثابت فارغ * ب 1 )

{

يعود ( * ( int * ) أ 1 - * ( int * ) ب 1 ) ؛

}

int رئيسي ( )

{

int أنا = 0 و على واحد = 6 ؛

int مجموعة مصفوفة [ ] = { 5 و 2 و 8 و 3 و 1 و 9 } ؛

qsort ( مجموعة مصفوفة و على واحد و حجم ( int ) و يقارن ) ؛

printf ( 'العناصر المصنفة للصفيف باستخدام qsort () هي:' ) ؛

ل ( أنا = 0 ؛ أنا < على واحد ؛ أنا ++ ) {

printf ( '٪د ' و مجموعة مصفوفة [ أنا ] ) ؛ }

يعود 0 ؛

}

في الكود أعلاه ، يتم أولاً إجراء وظيفة مقارنة مع معلمتين أ 1 و ب 1 . ثم يبدأ التنفيذ من main (). في الأساس ، نقوم بتهيئة متغيرين صحيحين مثل i = 0 و num = 6. ثم نعلن أن مصفوفة مكونة من ستة عناصر هي {5 ، 2 ، 8 ، 3 ، 1 ، 9} . بعد هذا qsort () تحتوي على ثلاث معلمات من نوع المصفوفة ، تخبر المعلمة num إجمالي عناصر المصفوفة ، sizeof (int) يشير إلى الحجم الإجمالي للمصفوفة ، وتستخدم المقارنة لمقارنة عناصر المصفوفة واحدًا تلو الآخر. ثم اطبع المصفوفة التي تم فرزها باستخدام printf () تعمل في C.

انتاج |

خاتمة

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