نطاقات
المتغيرات
أفعال

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

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

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]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.