تخطَّ إلى المحتوى

Bubble Sort

الترتيب الفقاعي Bubble Sort

Bubble Sort تقارن كل عنصرين متجاورين وتبدّلهما إن كانا بالترتيب الخاطئ، وتكرّر المرور حتى لا يوجد أي تبديل — أبسط خوارزمية ترتيب لكن أبطأها.

بكل مرور كامل، أكبر عنصر "يطفو" لنهايته الصحيحة (كفقاعة تصعد للسطح) — ومن هنا الاسم. تعليمية ممتازة لفهم مبدأ الترتيب، لكن غير عملية للبيانات الكبيرة بسبب بطئها O(n²).

الصياغة

for i in range(n):
    for j in range(0, n-i-1):
        if arr[j] > arr[j+1]:
            arr[j], arr[j+1] = arr[j+1], arr[j]

📄 مثال

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        swapped = False
        for j in range(n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                swapped = True
        if not swapped:  # لم يحدث أي تبديل = مرتّبة بالفعل
            break
    return arr

print(bubble_sort([5, 2, 8, 1, 9]))

أهم النقاط

النقطةالوظيفة
التعقيد الزمنيO(n²) بأسوأ ومتوسط الحالات، O(n) بأفضل حالة (مرتّبة سلفًا مع تحسين swapped)
التعقيد المكانيO(1) — ترتيب بمكانه، بلا ذاكرة إضافية
مستقرّة (Stable)؟نعم — لا تغيّر ترتيب العناصر المتساوية النسبي

💡 نصائح عملية

  • أضف علم swapped للتوقف مبكرًا إن أصبحت المصفوفة مرتّبة قبل انتهاء كل الدورات

⚠️ أخطاء شائعة

  • استخدامها ببيانات إنتاجية حقيقية كبيرة — استخدم دائمًا Merge/Quick Sort أو دالة الترتيب المدمجة بلغتك

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DSA الكامل بالعربي.