qsort
من cppreference.com
معرفة في ملف <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
[تعديل] أنظر أيضا
(C11) |
تبحث عن عنصر ما بداخل مصفوفة دون مبالاة للنوع (دالة) |
مقالة مرجع C++ عن qsort
|