مرتبسازی آرایهها در C
الگوریتم حبابی (Bubble Sort) و تابع qsort برای مرتبسازی آرایهها
مرتبسازی آرایه
مرتبسازی یکی از پرکاربردترین عملیات روی آرایههاست. دو روش را یاد میگیرید: الگوریتم ساده حبابی و تابع آماده qsort.
الگوریتم حبابی (Bubble Sort)
ایده: عناصر مجاور را مقایسه کن و اگر بهترتیب نباشند جابهجا کن. بزرگترین عدد بهتدریج مثل حباب به انتها «حباب» میزند:
void bubbleSort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// جابهجایی
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
مراحل اجرا روی مثال
آرایه {5, 2, 8, 1}:
- دور اول:
{2, 5, 1, 8}— عدد ۸ به جای خودش رسید - دور دوم:
{2, 1, 5, 8}— عدد ۵ سر جایش شد - دور سوم:
{1, 2, 5, 8}— مرتب کامل ✅
تابع آماده qsort
کتابخانه stdlib.h تابع قدرتمند qsort دارد. اول باید یک تابع مقایسه بنویسیم:
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b); // صعودی
}
// استفاده:
qsort(arr, size, sizeof(int), compare);
مرتبسازی نزولی
کافیست ترتیب مقایسه را برعکس کنید:
int compareDesc(const void *a, const void *b) {
return (*(int*)b - *(int*)a); // نزولی
}
مقایسه دو روش
| روش | سرعت | کاربرد |
|---|---|---|
| Bubble Sort | کند O(n²) | یادگیری، آرایههای کوچک |
| qsort | سریع O(n log n) | کد واقعی، آرایههای بزرگ |
نکات مهم
- برای پروژههای واقعی از qsort استفاده کنید؛ bubble sort فقط آموزشی است
- qsort میتواند هر نوع دادهای را مرتب کند (حتی رشته و struct) با تابع مقایسه مناسب
- جابهجایی دو متغیر در C نیاز به متغیر کمکی
tempدارد
این مبحث بخشی از دوره آموزش کامل زبان C است.