מילון (מבנה נתונים) – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
ליאור ג (שיחה | תרומות)
דף חדש: '''מילון''' (באנגלית נקרא '''Dictionary''', '''Map''' או '''Associative Array''') הוא מבנה נתונים אבסטרקטי אשר מגדיר אוסף של מ...
 
ליאור ג (שיחה | תרומות)
אין תקציר עריכה
שורה 1:
'''מילון''' (באנגלית נקרא '''Dictionary''', '''Map''' או '''Associative Array''') הוא [[מבנה נתונים]] אבסטרקטי אשר מגדיר אוסף של מפתחות וערכים, עם קישור (מיפוי) חד-ערכי בין '''מפתח''' (key) לערךל'''ערך''' (value). הפעולה של מציאת הערך שמקושר למפתח מסוים נקראת '''חיפוש''' (ולעיתים גם '''שליפה'''), והיא הפעולה החשובה ביותר שמאפשר המילון. לדוגמה, ספר-טלפונים יכול להיות ממומש באמצעות מילון - מיפוי שמות של אנשים (מפתחות) אל מספרי הטלפון שלהם (ערכים).
 
== פעולות מילון ==
שורה 6:
* '''חיפוש''' (Lookup) - פעולה המקבלת מפתח, ומחזירה את הערך הממופה לאותו מפתח. אם המפתח לא קיים במילון - יוחזר ערך שמציין שגיאה.
* '''מחיקה''' (Remove) - פעולה המקבלת מפתח ומוחקת אותו (ואת הערך הממופה אליו) מהמילון.
* '''החלפה''' (Reassign) - פעולה המקבלת מפתח קיים במילון וערך חדש, וממפה מחדש את המפתח לערך החדש (דריסה(הערך הקודם נדרס ונמחק). מילונים רבים מוותרים על הגדרת פעולה זאת, ובמקומה מרחיבים את פעולת ההוספה, כך שאם היא מקבלת מפתח שכבר קיים במילון, תתבצע דריסה באופן אוטומטי.
 
מילונים מורכבים יותר מאפשרים גם [[איטרציה]] על המפתחות, איטרציה על הערכים, או איטרציה על הערכים והמפחות בו-זמנית.
שורה 15:
* '''[[טבלת גיבוב]]''' - טבלת גיבוב היא מימוש של מילון המאפשר הוספה וחיפוש של מפתחות ב[[סיבוכיות זמן]] של <math>O\left(1\right)</math> ב[[תוחלת]] ו-<math>O\left(n\right)</math> במקרה הגרוע ביותר. טבלת גיבוב לא מאפשרת מיון, ואינה זוכרת את הסדר בו הוכנסו האיברים.
* '''[[עץ אדום שחור]]''' - עץ אדום שחור מאפשר חיפוש והוספה של מפתחות בסיבוכיות זמן של <math>O\left(\log n\right)</math> גם במקרה הגרוע. בנוסף, הוא מאפשר איטרציה ממוינת לפי סדר המפתחות.
* '''[[עץ B Plus]]''' - מימוש בעל יתרונות יחסיים עבור מילונים גדולים במיוחד (לדוגמה, מרשם האזרחים של [[משרד הפנים]], או [[מילון אבן-שושן]]).