โครงสร้างข้อมูลที่มีการจัดเก็บข้อมูลแบบตารางสองทาง ข้อมูลมี การจัดเรียงกันตามแนวแถว (Row)และ แนวหลัก (Column) การอ้างถึงข้อมูลต้องระบุตำแหน่งแถวและตำแหน่งหลักที่ข้อมูลนั้นอยู่
รูปแบบทั่วไปของโครงสร้างข้อมูลอาร์เรย์ 2 มิติ
ArrayName[L1 : U1 , L2 : U2]
เมื่อ ArrayName คือ ชื่อของโครงสร้างข้อมูลอาร์เรย์
L1 คือ ค่าขอบเขตล่างสุด (Lower Bound) ของแถว
U1 คือ ค่าขอบเขตสูงสุด (Upper Bound) ของแถว
L2 คือ ค่าขอบเขตล่างสุด (Lower Bound) ของคอลัมน์
U2 คือ ค่าขอบเขตสูงสุด (Upper Bound) ของคอลัมน์
การคำนวณหาจำนวนสมาชิกของอาร์เรย์สองมิติ
จำนวนสมาชิก = (U1 – L1 + 1) * (U2 – L2 + 1)
โดย U1 = ขอบเขตบนสุด ของแถว
L1 = ขอบเขตล่างสุด ของแถว
U2 = ขอบเขตบนสุด ของคอลัมน์
L2 = ขอบเขตล่างสุด ของคอลัมน์
เช่น A[1:2,1:3] มีจำนวนสมาชิก = (2-1+1)*(3-1+1)
= 2*3
= 6
A[1:2,1:3]
มีจำนวนสมาชิกเท่ากับ 6 ช่อง
การประกาศอาร์เรย์ 2 มิติในภาษาคอมพิวเตอร์
• รูปแบบ type[ ] [ ] array_name หรือ type array_name [ ] [ ]
จากนั้นต้องจองหน่วยความจำด้วยคำสั่ง new และระบุสมาชิกในอาร์เรย์
• รูปแบบ array_name = new type [row][col];
นอกจากนี้สามารถประกาศตัวแปรพร้อมกับจองพื้นที่หน่วยความจำ
• รูปแบบ type [ ] [ ] array_name = new type [row][col];
การจัดเก็บอาร์เรย์สองมิติในหน่วยความจำ
ทำได้ 2 แบบ
1. การจัดเก็บด้วยการเรียงแถวเป็นหลัก (Row Major Order)
2. การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก (Column Major Order)
สูตรการคำนวณหาตำแหน่งที่ใช้เก็บข้อมูลในอาร์เรย์สองมิติ
1. แบบการเรียงแถวเป็นหลัก
สูตร
LOC( K[i,j] ) = B+w[C(i-L1) + (j-L2)]
โดยที่
LOC(K[i,j]) = ตำแหน่งแอดเดรสที่เก็บ K[i,j] ในหน่วยความจำ
B = แอดเดรสเริ่มต้น (Base Address)
w = จำนวนช่องของหน่วยความจำที่จัดเก็บข้อมูลต่อหนึ่งสมาชิก
i = ตำแหน่งของแถวในอาร์เรย์
j = ตำแหน่งของคอลัมน์ในอาร์เรย์
L1 = ค่าขอบเขตล่างสุด (lower Bound) ของคอลัมน์
L2 = ค่าขอบเขตล่างสุด (lower Bound) ของคอลัมน์
C = จำนวนคอลัมน์ของแถวลำดับ
ตัวอย่าง ต้องการทราบตำแหน่งแอดเดรสที่เก็บข้อมูลอาร์เรย์ K แถวที่ 2 คอลัมน์ 1 (K[2,1]) กำหนดให้ B = 500 W = 4 ไบต์
การคำนวณ
สูตร
LOC(K[ i, j ]) = B+w[C(i-L1) + (j-L2)]
LOC(K[ 2, 1 ]) = 500+4[3(2-0) + (1-0)]
= 500+4[6+1]
= 500+28
= 528
ดังนั้นอาร์เรย์ K แถวที่ 2 คอลัมน์ 1 จะจัดเก็บอยู่ในตำแหน่งแอดเดรสที่ 528