الفكرة
تخزين أزواج مفتاح-قيمة مع وصول شبه فوري O(1) — تُعرف بـ dict في بايثون وHashMap في جافا وobject/Map في جافاسكربت.
ages = {}
ages["براء"] = 25 # إدراج O(1)
ages["براء"] # بحث O(1)
"سارة" in ages # فحص O(1)
كيف تعمل؟
دالة التجزئة (hash function) تحوّل المفتاح إلى فهرس في مصفوفة داخلية، فيُخزَّن/يُسترجَع مباشرةً.
التصادمات (Collisions)
عندما ينتج مفتاحان نفس الفهرس. تُعالَج بـ:
- التسلسل (Chaining): قائمة في كل خانة.
- العنونة المفتوحة (Open addressing): البحث عن خانة فارغة تالية.
التعقيد
- متوسط:
O(1)للإدراج/البحث/الحذف. - أسوأ حالة (تصادمات كثيرة):
O(n).
تطبيقات
- العدّ والتجميع، إزالة التكرار، الذاكرة المؤقّتة (caching)، الفهرسة.
🎯 التالي: التعاوديّة (Recursion).