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

תוכן שנמחק תוכן שנוסף
מ נמחוק=>נמחק
Matanyabot (שיחה | תרומות)
מ בוט החלפות: לעיתים
שורה 46:
 
למערך ישנם כמה חסרונות שדורשות התייחסות בעבודה עם המבנה במהלך [[תכנות]]:
* אם מספר האיברים אשר יוכנסו למערך לא ידוע מראש, יכול להווצר מצב שמערך שהוגדר יהיה קטן מדי ותהיה דרישה להגדילו. פעילות כזאת תדרוש, לעתיםלעיתים, העתקת כל הנתונים הקיימים למקום אחר שממנו אפשר להגדיל את הרצף בזיכרון, דבר שמכביד מבחינת ביצועי התוכנה. שפות תכנות מסוימות מאפשרות טיפוסים מובנים שמבצעים את ההגדלה הדינאמית (כמו למשל [[Visual Basic]], הטיפוס הפרימטיבי list ב[[Python]], וכדומה), שפות אחרות דורשות מהמתכנת לבצע את הפעולה בפירוש, תוך הגדרה של גודל החדש.
* במקרים שבהם זקוקים למערך דליל (מערך בעל טווח ערכים גדול במיוחד, אף שרוב תאיו לא ינוצלו), אין זה מן הנמנע שבזיכרון הפנוי במחשב לא יימצא כלל מקום לרצף התאים שנתבקש, והקצאת המערך לא תתאפשר, וגם אם תתאפשר הקצאת המערך תגרום לבזבוז רב של זיכרון. למשל: אם משתמשים במערך כדי לייצג את כל תושבי מדינת ישראל, כך שהאינדקס של כל איבר במערך יהיה מספר תעודת הזהות של התושב, יהיה מספר עצום של תאים (<math>\ 10^9</math>) שרק חלק זעום מהם יהיה תפוס. לבעיות מטיפוס כזה מתאימים מבני נתונים אחרים, כדוגמת [[טבלת גיבוב]] או [[מטריצה דלילה]].
 
שורה 60:
* בעזרת מערכים ניתן לייצג מבני נתונים מורכבים יותר: [[ערימה|ערימות]], [[טבלת גיבוב|טבלאות גיבוב]], [[תור (מבנה נתונים)|תורים]], [[מחסנית (מבנה נתונים)|מחסניות]], [[רשימה (מבנה נתונים)|רשימות]], [[מחרוזת (תכנות)|מחרוזת]], [[עץ חיפוש]] (למשל [[B-Tree]]) ועוד.
* מערכים משמשים בהרבה מקרים בתור [[עריכת מונה (תורת הקבוצות)|מונים]] ב[[אלגוריתם|אלגוריתמים]] שונים (למשל - [[מיון מנייה]]).
* מערכים משמשים בהרבה מקרים בתור אוסף של [[דגל (מחשבים)|דגלים]] (בשפות תכנות מתייחסים לעתיםלעיתים לשימוש כזה של מערך בשם ''bitmask'', המערך הוא מערך [[סיבית|ביטים]] בודדים וכל ביט יכול לקבל ערך <math>\ 1</math> או <math>\ 0</math>).
 
אלטרנטיבה מקובלת למערך במקרה של מספר נתונים משתנה היא [[רשימה מקושרת]], המאופיינת בגמישות בהוספה ובמחיקה של איברים.