โครงสร้างข้อมูบแบบอาร์เรย์
อาร์เรย์ ( Array ) หรือแถวลำดับ คือการรวมกลุ่มของตัวแปรที่สามารถใช้ตัวแปรชื่อเดียวแทนข้อมูลสมาชิกได้ หลายๆตัว ใช้เลขดรรชนี ( index ) หรือ ( Subscript ) เป็นตัวอ้างอิงตำแหน่งสมาชิกบนแถวลำดับ
คุณสมบัติสำคัญของอาร์เรย์
- อาร์เรย์เป็นตัวแทนของกลุ่มที่มีความสัมพันธ์กัน
- มีชนิดข้อมูลเหมือนกันทั้งหมด
- อาร์เรย์มีขนาดคงที่
- ผู้ใช้สามารถอ้างอิงเพื่อเข้าถึงข้อมูลที่ต้องการได้ทันที
ขอบเขตของอาร์เรย์ [Bounds]
- ภาษา C,C++,C#,JAVA จะถูกกำหนดขอบเขตล่างสุดเท่ากับ 0
- ภาษา FRONTRAN จะถูกกำหนดขอบเขตล่างสุดเท่ากับ 1
- ADA,PL/1,PASCAL สามารถทำการกำหนดขอบเขตล่างสุดและขอบเขตบนสุดของอาร์เรย์ได้ รวมถึงกำหนดขอบเขตค่าติดลบได้
อาร์เรย์ 1 มิติ
อาร์เรย์ 1 มิติ คือ อาร์เรย์ที่มีลักษณะเป็นตารางแถวเดียวกันและมีเพียงด้านเดียวด้วย มีจำนวนช่อง หรือ Element เท่ากับ จำนวน n ช่อง การกำหนดอาร์เรย์ 1 มิติ ทำได้โดย A(n) กำหนดให้อาร์เรย์มี 1 มิติ ชื่อ A มีจำนวน n =ช่อง STR(50) กำหนดให้อาร์เรย์มี 1 มิติ ชื่อ STR มีจำนวน 50 ช่อง
อาร์เรย์ 2 มิติ อาร์เรย์ 2 มิติ คืออาร์เรย์ที่มีลักษณะเป็นตารางที่มี 2 ด้าน คือ ทางด้านแนวตั้ง และแนวนอน หรือทางด้าน Row และทางด้าน Column มีจำนวนช่อง หรือ Element เท่ากับ จำนวน n ช่องทางด้านแนวนอน (Row) คูณ กับ จำนวน m ช่องทางด้านแนวตั้ง (Column) การกำหนดอาร์เรย์ 2 มิติ ทำได้โดย A(n,m) กำหนดให้อาร์เรย์มี 2 มิติ ชื่อ A มีจำนวน n ช่องทางด้านแนวนอน (Row) และ m ช่องทางด้านแนวตั้ง (Column) STR(20,50) กำหนดให้อาร์เรย์มี 2 มิติ ชื่อ STR มีจำนวน 20 ช่องทางด้านแนวนอน (Row) และ 50 ช่องทางด้านแนวตั้ง (Column)
อาร์เรย์ 3 มิติ
อาร์เรย์ 3 มิติ คือ อาร์เรย์ที่มีลักษณะเป็นตารางที่มี 3 ด้าน คือ ทางด้านแนวตั้ง แนวนอน และแนวลึก หรือทางด้าน Row ทางด้าน Column และทางด้าน Deep มีจำนวนช่อง หรือ Element เท่ากับ จำนวน n ช่องทาง ทางด้านแนวนอน (Row) คูณ กับ จำนวน m ช่องทางด้านแนวตั้ง (Column) และคูณ กับจำนวน D ช่อง ทางด้านแนวลึก (Deep)
การจัดเก็บอาร์เรย์ในหน่วยความจำ รูปแบบทั่วไปของโครงสร้างข้อมูลอาร์เรย์
อาร์เรย์ 1 มิติ ใช้สูตร ArrayName [ L:U ]
ตัวอย่าง a[1:10] = a[10]
อาร์เรย์ 2 มิติ ใช้สูตร ArrayName [ L1:U1,L2:U2 ]
ตัวอย่าง a[4,5] = a[0:3,0:4]
อาร์เรย์ 3 มิติ ใช้สูตร ArrayName [ L1:U1,L2:U2 ,L3:U3 ]
ตัวอย่าง a[6,5,4] = a[0:5,0:4,0:3]
อาร์เรย์ 1 มิติ ใช้สูตร ArrayName [ L:U ]
ตัวอย่าง a[1:10] = a[10]
อาร์เรย์ 2 มิติ ใช้สูตร ArrayName [ L1:U1,L2:U2 ]
ตัวอย่าง a[4,5] = a[0:3,0:4]
อาร์เรย์ 3 มิติ ใช้สูตร ArrayName [ L1:U1,L2:U2 ,L3:U3 ]
ตัวอย่าง a[6,5,4] = a[0:5,0:4,0:3]
การคำนวณหาตำแหน่งแอดเดรสในหน่วยความจำ
กำหนด
LOC(a[i]) คือ ตำแหน่งแอดเดรสที่เก็บ
a[i] ในหน่วยความจำ
B คือ แอดเดรสเริ่มต้นของ a
w คือ ขนาดของข้อมูลในการจัดเก็บ
i คือ ตำแหน่งของสมาชิกในอาร์เรย์
L คือ ขอบเขตล่างสุด
a[i] ในหน่วยความจำ
B คือ แอดเดรสเริ่มต้นของ a
w คือ ขนาดของข้อมูลในการจัดเก็บ
i คือ ตำแหน่งของสมาชิกในอาร์เรย์
L คือ ขอบเขตล่างสุด
อาร์เรย์ 1 มิติ ใช้สูตร LOC(a[i]) = B + w(i – L)
อาร์เรย์ 2 มิติ
การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก
ใช้สูตร LOC(a[i]) = B + w[C(i – L1) + ( j – L2)]
โดยที่ C คือตำแหน่งคอลัมน์ของแถวลำดับ ( R*C )
การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก
ใช้สูตร LOC(a[i]) = B + w[C(i – L1) + ( j – L2)]
โดยที่ C คือตำแหน่งคอลัมน์ของแถวลำดับ ( R*C )
อาร์เรย์ 3 มิติ
การจัดเก็บด้วยการเรียงแถวเป็นหลัก
ใช้สูตร LOC(s[i,j,k]) = B + [ w * R * C( i - L1)
+ [w * C( j – L2 )] + [w(k-L3)]
การจัดเก็บด้วยการเรียงแถวเป็นหลัก
ใช้สูตร LOC(s[i,j,k]) = B + [ w * R * C( i - L1)
+ [w * C( j – L2 )] + [w(k-L3)]
อาร์เรย์ 3 มิติ
การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก
ใช้สูตร LOC( S[i,j,k]) = B + [w * K * R * C(j – L2) ]
+ [ w * K * R(i – L1 )] + [k – L3]
การจัดเก็บด้วยการเรียงคอลัมน์เป็นหลัก
ใช้สูตร LOC( S[i,j,k]) = B + [w * K * R * C(j – L2) ]
+ [ w * K * R(i – L1 )] + [k – L3]
