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 الكامل بالعربي.