qsort
من cppreference.com
<tbody>
</tbody>
| معرفة في ملف <stdlib.h>
|
||
void qsort( void *ptr, size_t count, size_t size, int (*comp)(const void *, const void *) ); |
||
تقوم بترتيب المصفوفة التي يشير إليها ptr ترتيبا تصاعديا. المصفوفة تحوي عدد count من العناصر وكل عنصر حجمه size بايت. يتم استعمال الدالة المشار إليها بـ comp لإجراء المقارنات.
في حالة أن قيمة comp المُرجعة تدل على تساوي عنصرين, يكون ترتيب العنصرين غير معرف.
المعطيات
| ptr | - | مؤشر إلى المصفوفة المطلوب ترتيبها |
| count | - | عدد العناصر في المصفوفة |
| size | - | حجم كل عنصر في المصفوفة |
| comp | - | دالة مقارنة تقوم بإرجاع عدد صحيح سالب عندما يكون المعطى الأول أصغر من المعطى الثاني. عدد صحيح موجب عندما يكون المعطى الأول أكبر من المعطى الثاني وصفر إذا تساوى المعطيان.
لا يجوز للدالة أن تعدل من المعطيات |
القيمة المُرجعة
(لا شيء)
ملحوظات
رغم إسم الدالة (qsort) فمطبقي الدالة ليسوا ملزمين باستخدام خوارزمية Quicksort ولهم حرية الإختيار مادام الناتج النهائي يوفي بالشروط التي سردت هنا.
مثال
الكود التالي يرتب مصفوفة من الأعداد الصحيحة باستخدام qsort()
قم بتشغيل هذا الكود:
#include <stdio.h>
#include <stdlib.h>
int compare_ints(const void* a, const void* b)
{
int arg1 = *(const int*)a;
int arg2 = *(const int*)b;
if (arg1 < arg2) return -1;
if (arg1 > arg2) return 1;
return 0;
}
int main(void)
{
int i;
int ints[] = { -2, 99, 0, -743, 2, 3, 4 };
int size = sizeof ints / sizeof *ints;
qsort(ints, size, sizeof(int), compare_ints);
for (i = 0; i < size; i++) {
printf("%d ", ints[i]);
}
printf("\n");
return EXIT_SUCCESS;
}
الخرج:
-743 -2 0 2 3 4 99
أنظر أيضا
(C11) |
تبحث عن عنصر ما بداخل مصفوفة دون مبالاة للنوع (دالة) |
مقالة مرجع C++ عن qsort
|