309. Jagged Array

בהמשך לאווירת המערכים מפעמים קודמות, קיימות שתי דרכים לייצג מערך דו מימדי:

הראשונה היא הדרך הקלאסית אותה מכיר מי שתכנת בשפות אחרות כמו C, והיא ע”י מערך דו מימדי, שבעצם מדובר בייצוג נוח של הקומפיילר במערך חד מימדי רצוף של כל השורות בזו אחר זו. מאחר והשורות נמצאות ברצף זו אחר זו, מלמדים שעדיף לעבור על מערך כזה כאשר קודם רצים על שורות, ובלולאה פנימית רצים על העמודות של כל שורה.

השנייה היא באמצעות משהו שנקרא Jagged Array. מי שתכנת בJava כנראה יצא לו להתקל בקונספט הבא: נייצג מערך דו מימדי בתור מערך חד מימדי של מערכים חד מימדיים:

1
int[][] matrix;

לייצוג זה יש יתרונות וחסרונות. מאחר ומדובר במערך של מערכים, ניתן לדאוג שלכל "שורה" יהיה אורך אחר. מצד שני, אם אנחנו רוצים להשתמש בו בתור מערך דו-מימדי, השימוש הוא מעט פחות נוח, למשל ככה יראה אתחול של מערך דו מימדי כזה בגודל 3 על 4:

1
2
3
4
5
6
int[][] matrix = new int[3][];
for (int i = 0; i < matrix.Length; i++)
{
matrix[i] = new int[4];
}

למי שבא מJava, הקוד הבא לא עובד:

1
int[][] matrix = new int[3][4];

בהמשך נדבר על השוואות ביצועים בין מערך דו מימדי לJagged Array.

המשך יום מוערך לטובה.

שתף