المتغيرات
فضاءات التسمية
أفعال

qsort

من cppreference.com
< c‏ | algorithm
معرفة في ملف <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 - دالة مقارنة تقوم بإرجاع عدد صحيح سالب عندما يكون المعطى الأول أصغر من المعطى الثاني.

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

 int cmp(const void *a, const void *b);

لا يجوز للدالة أن تعدل من المعطيات

[تعديل] القيمة المُرجعة

(لا شيء)

[تعديل] ملحوظات

رغم إسم الدالة (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

[تعديل] أنظر أيضا

تبحث عن عنصر ما بداخل مصفوفة دون مبالاة للنوع
(دالة) [edit]