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

תוכן שנמחק תוכן שנוסף
הוספת כותרת "מבני נתונים בסיסיים" + מידע התחלתי ועיקרי
מערך ורשומה הם לא "בסיסיים". הם מורכבים.
שורה 5:
העיסוק במבני נתונים הוא חלק מהתפתחותם של מדעי המחשב בחצי השני של [[המאה העשרים]].
 
== מבני נתונים בסיסייםנפוצים ==
* [[מערך (מבנה נתונים)|מערך]] - מבנה שמורכב מאוסף של תאים שסדרם בדרך כלל בעל חשיבות. ניתן לגשת לכל תא בעזרת מיקומו הסידורי. מערכים יכולים להיות בעלי גודל קבוע או בעלי גודל משתנה.
מימושם של רוב מבני הנתונים המורכבים כרוך בשימוש במבני נתונים בסיסיים יותר על מנת להקל על ביצוע פעולות בסיסיות על איברים מבלי הצורך לחזור על כוונות דומות (כגון שליפת איברים סמוכים מזיכרון המחשב). בחלק משפות התכנות הנפוצות קיימת תמיכה במבני הנתונים הבסיסיים הבאים:
* [[רשומה]] - מבנה שמורכב מאוסף קבוע של תאים בסדר מסוים הנקראים לעתים שדות או איברים, המכילים מידע. לתאים אלה בדרך כלל פונים לפי שמות ברורים הניתנים להם.
 
[[מערך (מבנה נתונים)|מערך]] - מבנה שמורכב מאוסף של תאים שסדרם בדרך כלל בעל חשיבות. ניתן לגשת לכל תא בעזרת מיקומו הסידורי. מערכים יכולים להיות בעלי גודל קבוע או בעלי גודל משתנה.
 
[[רשומה]] - מבנה שמורכב מאוסף קבוע של תאים בסדר מסוים הנקראים לעתים שדות או איברים, המכילים מידע. לתאים אלה בדרך כלל פונים לפי שמות ברורים הניתנים להם.
 
[[קבוצה (מבנה נתונים)|קבוצה]] - מבנה נתונים מופשט שכל ערך מופיע בו לכל היותר פעם אחת, ואין חשיבות לסדר בין הערכים. מימוש של קבוצה הוא למעשה ייצוג ממוחשב של [[קבוצה (מתמטיקה)|קבוצה מתמטית]] סופית.
== מבני נתונים מורכבים נפוצים ==
* [[רשימה (מבנה נתונים)|רשימה]] (List) - מבנה נתונים מופשט המגדיר אוסף סדרתי של איברים.
** [[רשימה מקושרת]] (Linked List) - רשימה שבה כל איבר מצביע על האיבר הבא אחריו.
*[[קבוצה (מבנה נתונים)|קבוצה]] - מבנה נתונים מופשט שכל ערך מופיע בו לכל היותר פעם אחת, ואין חשיבות לסדר בין הערכים. מימוש של קבוצה הוא למעשה ייצוג ממוחשב של [[קבוצה (מתמטיקה)|קבוצה מתמטית]] סופית.
* [[מילון (מבנה נתונים)|מילון]] (Dictionary, Map) - מבנה נתונים מופשט המאפשר מיפוי בין מפתחות לערכים. נקרא גם "מערך אסוציאטיבי".
** [[טבלת גיבוב]] (Hash Table) - מימוש של מילון המשתמש ב[[פונקציית גיבוב]] על-מנת להקטין את תחום המפתחות ולשמרם במערך לצורך שליפה מהירה.
שורה 30 ⟵ 25:
* [[ערימה]] (heap) - עץ שבו כל צומת גדול (ערימת מקסימום) או קטן (ערימת מינימום) משני בניו.
* [[איחוד קבוצות זרות]] (Union Find) - מבנה נתונים המאפשר מעקב אחר קבוצות זרות וביצוע איחוד שלהם, וחיפוש הקבוצה המתאימה לאיבר ביעילות גבוהה מאוד.
 
== שיקולים בבחירת מבנה נתונים ==
בחירת מבנה נתונים מתאים יכולה לכלול מספר שיקולים וכרוכה לעתים בלבטים. השיקולים העקריים הם צריכת הזיכרון ומהירות הביצוע. לכל מימוש של מבנה נתונים יש פעולות שאותן הוא מבצע מהר יחסית ופעולות איטיות יותר. בחירת מבנה נתונים נובעת, לכן, מהשכיחות היחסית המוערכת בין הפעולות השונות. לעתים יש חשיבות מרבית לזמן הביצוע '''הממוצע''' ולעתים לזמן הביצוע '''הגרוע ביותר'''.
 
לדוגמה, לעתים רבות עולה התלבטות לגבי שמירה של סדרת נתונים ברשימה או במערך דינאמידינמי. לרשימה יש יתרון בהוספת איבר חדש בין אברים קיימים ברשימה. למערך יש יתרון בגישה מהירה לאיבר שרירותי. הבחירה בין שני מבני הנתונים מתבססת בדרך כל על השכיחות המצופה של הפעולות הללו.
 
==קישורים חיצוניים==