מערך
טיפוס נתונים אבסטרקטי המכיל אוסף של איברים וקבוצת אינדקסים ותומך בפעולות הבאות:
א. - מחזירה מערך של איברים מטיפוס עם אינדקסים בקבוצה .
ב. - מוסיפה איבר מטיפוס עם אינדקס (כאשר ) לאיברי המערך.
ג. - מחזירה את האיבר האחרון שהוכנס עם פקודת לאינדקס .
נוכל לממש מערך בכמה דרכים:
- איזור רצוף בזכרון: זמן ביצוע הוא וזמן יצירת מערך חדש תלוי בזמן הקצאת מקום ובשאלה האם צריך למלא את כולו בערך התחלתי בעת היצירה.
- מספר איזורים רצופים בזכרון שלכל אחד גודל קבוע : לכל איזור כזה נקרא "בלוק". כדי לממש מערך בגודל יש להקצות בלוקים כאשר ובלוק נוסף שנקרא "מדריך". נסמן את כתובת הבסיס של המדריך ב- ואז האיבר ה- נמצא בכתובת . זמן חישוב הכתובת במקרה זה הוא גם כן .
לדוגמה, עבור הכתובת של מחושבת ע"י: .
מערך רב מימדי
במערך רב מימדי הכתובת של מחושבת ע"י הנוסחה:
נוכל לייעל את חישוב הכתובת באמצעות הקוד הבא:
addr = i[d];
for (j = d - 1; j >= 1; j--)
addr = addr * n[j] + i[j];
addr = base + addr;
אתחול מערך ב-
נרצה לעדכן את פעולת כך שתקבל פרמטר נוסף כך שכל התאים במערך יאותחלו לערך זה.
אתחול מערך באופן זה בגודל דורש זמן של אך נרצה לעשות זאת בפעולת האתחול בזמן קבוע.
⟸ כדי לעשות זאת אנו נשתמש בזכרון נוסף (ללא שינוי אסימפטוטי).
בעצם, אי אפשר לאתחל מערך כזה מהר אך אנו שולטים ב- וב-. נשמור מידע על אילו אינדקסים כבר נכתבו ואם נגשים לאינדקס שלא נכתב עליו כלום, נחזיר את הערך ההתחלתי.
מטריצות
- עבור מטריצה סימטרית נוכל לאחסן רק את חצי מהערכים שכן . נחשב את המיקום כך:
- עבור מטריצטת דלילות, כשרוב המוחלט של האיברים הוא , נוכל לשמור במערך את האיברים של המטריצות בשלשות .
אם סדרת מטריצות מקיימת שמספר האיברים השונים מקבוע הוא מסדר גודל של כאשר הוא מספר המקומות המקסימלי במטריצה אז זוהי סדרה של מטריצות דלילות ותקרא דלילה.
מטריצות אלכסוניות
כאשר נרצה לאחסן סדרה שכזו נשמש בטריק של אחסון שלשות בסדר לקסיקוגרפי. בכך, נוותר על סיבוכיות הזמן לטובת חוסך בזכרון והאצה של םעולות חיבור וכפל.