🧮 مرجع الخوارزميات وتعقيدها بالعربي
كل خوارزمية ترتيب وبحث وفئة تعقيد بالعربي: كيف تعمل، مثال كود، وتعقيدها الزمني — مرجع سريع للمقابلات التقنية. حاليًا 28 خوارزمية — والقائمة تكبر.
خوارزميات الترتيب
Bubble Sort
الترتيب الفقاعي
Bubble Sort تقارن كل عنصرين متجاورين وتبدّلهما إن كانا بالترتيب الخاطئ، وتكرّر المرور حتى لا يوجد أي تبديل — أبسط خوارزمية ترتيب لكن أبطأها.
Selection Sort
ترتيب الاختيار
Selection Sort تبحث عن أصغر عنصر بالجزء غير المرتّب وتضعه بمكانه الصحيح، وتكرّر ذلك حتى تنتهي المصفوفة.
Insertion Sort
ترتيب الإدراج
Insertion Sort تبني المصفوفة المرتّبة تدريجيًا، تُدرج كل عنصر جديد بموضعه الصحيح ضمن الجزء المرتّب سابقًا — تمامًا كترتيب أوراق لعب بيدك.
Merge Sort
الترتيب بالدمج
Merge Sort تقسّم المصفوفة لنصفين بشكل متكرّر (فرّق تسد) حتى تصل لعناصر مفردة، ثم تدمجها مرتّبة تصاعديًا — أداء مضمون O(n log n) دائمًا.
Quick Sort
الترتيب السريع
Quick Sort تختار عنصرًا محوريًا (pivot)، تقسّم المصفوفة لأصغر وأكبر منه، ثم تكرّر ذلك على كل قسم — الأسرع عمليًا بمتوسط الحالات رغم أسوأ حالة نظرية أبطأ.
Counting Sort
الترتيب بالعدّ
Counting Sort يرتّب بعدّ تكرار كل قيمة بدل مقارنة العناصر، بتعقيد O(n + k) حيث k مدى القيم — أسرع من الترتيب المقارِن لكن فقط عندما k محدود المدى.
Radix Sort
الترتيب الأساسي
Radix Sort يرتّب الأعداد رقمًا (خانة) واحدة في كل مرة من الأقل أهمية للأكثر، باستخدام خوارزمية مستقرّة (عادة Counting Sort) كخطوة فرعية بكل مرور.
خوارزميات البحث
فئات التعقيد (Big O)
O(1)
زمن ثابت
O(1) يعني أن العملية تأخذ نفس الوقت تقريبًا بغض النظر عن حجم البيانات — الأسرع الممكن.
O(log n)
زمن لوغاريتمي
O(log n) يعني أن العملية تستبعد جزءًا كبيرًا من البيانات بكل خطوة (غالبًا النصف) — سريعة جدًا حتى مع بيانات ضخمة.
O(n)
زمن خطّي
O(n) يعني أن الوقت يزداد بشكل متناسب طرديًا مع حجم البيانات — ضعف البيانات يعني تقريبًا ضعف الوقت.
O(n log n)
زمن شبه خطّي
O(n log n) هو تعقيد أفضل خوارزميات الترتيب المقارنة (Merge Sort، Quick Sort بالمتوسط) — أسرع بكثير من O(n²) مع بيانات كبيرة.
O(n²)
زمن تربيعي
O(n²) يعني أن الوقت يتناسب مع مربّع حجم البيانات — حلقة متداخلة داخل حلقة أخرى على نفس البيانات، بطيئة جدًا مع بيانات كبيرة.
خوارزميات الرسوم البيانية
BFS (Breadth-First Search)
البحث بالعرض
BFS يزور كل جيران العقدة الحالية أولًا قبل التعمّق لأبعد منها، باستخدام طابور (Queue) — يضمن أقصر مسار بعدد القفزات في رسم بياني غير موزون.
DFS (Depth-First Search)
البحث بالعمق
DFS يتعمّق في فرع واحد من الرسم البياني حتى نهايته قبل التراجع لتجربة فرع آخر، باستخدام مكدّس (أو التعاوديّة).
Dijkstra's Algorithm
خوارزمية Dijkstra
خوارزمية Dijkstra تجد أقصر مسار (بالوزن) من عقدة مصدر لكل عقدة أخرى في رسم بياني موزون بأوزان غير سالبة — أساس تطبيقات الملاحة والخرائط.
Topological Sort
الترتيب الطوبولوجي
الترتيب الطوبولوجي يرتّب عقد رسم بياني موجّه بلا دورات (DAG) بحيث تسبق كل عقدة كل عقدة تعتمد عليها — أساس جدولة المهام المترابطة.
Union-Find (DSU)
Union-Find (Disjoint Set Union)
Union-Find هيكل بيانات يتتبّع مجموعات منفصلة لا تتقاطع، بعمليتين أساسيتين: دمج مجموعتين (union) وفحص هل عنصران بنفس المجموعة (find) — بزمن شبه ثابت مع تحسينين بسيطين.
Kruskal's Algorithm
خوارزمية Kruskal
خوارزمية Kruskal تبني الشجرة الممتدة الصغرى (MST) بترتيب كل أضلاع الرسم البياني تصاعديًا وإضافة كل ضلع لا يُكوّن دورة، بمساعدة Union-Find.
Prim's Algorithm
خوارزمية Prim
خوارزمية Prim تبني الشجرة الممتدة الصغرى (MST) بتنمية شجرة واحدة تدريجيًا من عقدة بدئية، وتضيف بكل خطوة أرخص ضلع يربط الشجرة الحالية بعقدة خارجها.
Bellman-Ford Algorithm
خوارزمية Bellman-Ford
خوارزمية Bellman-Ford تجد أقصر مسار من مصدر واحد لكل عقدة أخرى حتى لو وُجدت أوزان سالبة (حيث تفشل Dijkstra)، وتكشف أيضًا وجود دورة سالبة.
Floyd-Warshall Algorithm
خوارزمية Floyd-Warshall
خوارزمية Floyd-Warshall تحسب أقصر مسار بين كل زوج من العقد دفعة واحدة ببرمجة ديناميكية، بتعقيد O(V³)، وتتعامل مع أوزان سالبة بلا دورة سالبة.
هياكل البيانات
Trie
الشجرة اللاحقة (Trie)
Trie شجرة تخزّن النصوص حرفًا بحرف، بحيث تتشارك الكلمات ذات البادئات المشتركة نفس الفروع — إدراج وبحث بتعقيد O(طول الكلمة)، مثالية للإكمال التلقائي.
Hash Table
جدول التجزئة
جدول التجزئة يخزّن أزواج مفتاح-قيمة مع وصول شبه فوري O(1) بالمتوسط، عبر دالة تجزئة تحوّل المفتاح لفهرس بمصفوفة داخلية.
Binary Search Tree (BST)
شجرة البحث الثنائية
شجرة البحث الثنائية تحافظ على خاصية ترتيب: كل عقدة أكبر من عقد شجرتها اليسرى وأصغر من عقد شجرتها اليمنى — تتيح بحثًا وإدراجًا وحذفًا بتعقيد O(log n) إن كانت متوازنة.
تقنيات حل المسائل
Two Pointers
تقنية المؤشّرين
تقنية المؤشّرين تستخدم مؤشّرين يتحرّكان عبر مصفوفة (غالبًا مرتّبة) لحلّ مسائل بتعقيد O(n) بدل الحل الساذج O(n²) بحلقتين متداخلتين.
Sliding Window
النافذة المنزلقة
النافذة المنزلقة تحسب نتيجة على نطاقات متتالية من مصفوفة بكفاءة، عبر تحريك نافذة (بحجم ثابت أو متغيّر) بدل إعادة حساب كل نطاق من الصفر.
🎓 تريد التعلم بالترتيب بدل المرجع السريع؟ ابدأ من مسار DSA الكامل بالعربي.