مرتب‌سازی آرایه‌ها در 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}:

  1. دور اول: {2, 5, 1, 8} — عدد ۸ به جای خودش رسید
  2. دور دوم: {2, 1, 5, 8} — عدد ۵ سر جایش شد
  3. دور سوم: {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)کد واقعی، آرایه‌های بزرگ

نکات مهم

این مبحث بخشی از دوره آموزش کامل زبان C است.

ابزارهای مرتبط