อาร์เรย์ 2 มิติ (Two

Download Report

Transcript อาร์เรย์ 2 มิติ (Two

ARRAY
อ.วรพจน์ พรหมจักร
นิยาม/ความหมาย


อาร์เรย์ เป็ นตัวแปรชุดที่มีการกาหนดชื่อตัวแปรเพียงชื่อเดียว แต่สามารถ
กาหนดจานวนช่องที่ใช้ในการจัดเก็บข้อมูลได้หลายช่อง ชนิ ดข้อมูลที่จดั เก็บใน
อาร์เรย์ชุดเดียวกันจะมีชนิ ดข้อมูลเพียงชนิ ดเดียว และการอ้างอิงอาร์เรย์จะต้อง
ระบุชอ่ งที่ของอาร์เรย์ เรียกว่า Subscript หรือ Index
อาร์เรย์เป็ นโครงสร้างข้อมูลแบบเส้น (Linear Structure)
กล่าวคือ ช่องที่ใช้ในการจัดเก็บข้อมูลของอาร์เรย์เดียวกัน จะใช้เนื้ อที่ใน
หน่ วยความจาเรียงลาดับกันไปตั้งแต่ชอ่ งแรกไปจนถึงช่องสุดท้ายของอาร์เรย์ และ
มีจานวนช่องที่ตายตัว
นิยาม/ความหมาย

อาร์เรย์ เป็ นโครงสร้างข้อมูลที่ใช้เก็บข้อมูลชนิ ดเดียวกัน เป็ นกลุ่มหรือชุดที่
เรียงติดต่อกันเป็ นแถว มีขอบเขตจากัดและมีขนาดคงที่
** ข้อมูลชนิดเดียวกัน คือ ข้อมูลทุกตัวที่อยูใ่ นอาร์เรย์จะต้องเป็ น
ข้อมูลชนิ ดเดียวกันเท่านั้น เช่น ถ้าเป็ นอาร์เรย์ชนิ ดจานวนเต็ ม ข้อมูลทุกตัวใน
อาร์เรย์ก็ตอ้ งเป็ นชนิ ดจานวนเต็ม ไม่สามารถเก็บข้อมูลต่างชนิ ดกันได้ **
ลักษณะของ ARRAY



อาร์เรย์เป็ นโครงสร้างข้อมูล ที่มีลกั ษณะ ดังนี้
1. เป็ นโครงสร้างข้อมูลชนิดเป็ นเชิงเส้น (Linear Structure) คือ
จัดเก็บข้อมูลในช่องของอาร์เรย์ต่อเนื่ องกันไป ข้อมูลช่องที่ติดกันจะเก็บใน
หน่ วยความจาที่ต่อเนื่ องกัน เช่น อาร์เรย์ A ช่องที่ 2 จะอยูต่ ่อจากอาร์เรย์
A ช่องที่ 1 เป็ นต้น
2. จัดเก็บข้อมูลชนิดเดียวกัน คือ ในอาร์เรย์เดียวกันไม่วา่ จะกาหนด
จานวนช่องไว้กี่ชอ่ งก็ตาม ชนิ ดของทุกช่องจะเป็ นชนิ ดข้อมูลเดียวกันเท่านั้น
ไม่สามารถจัดเก็บข้อมูลที่มีหลากหลายชนิ ดในอาร์เรย์เดียวกันได้
ลักษณะของ ARRAY



3. มีการกาหนดจานวนช่องไว้แน่นอน คือ เมื่อกาหนดตัวแปรใดให้เป็ นอาร์เรย์
จะต้องระบุจานวนช่องของอาร์เรย์วา่ จะให้มชี อ่ งที่ใช้ในการจัดเก็บข้อมูลทั้งหมดกี่
ช่อง และแต่ละช่องจะเรียงต่อเนื่ องกันไปเรื่อยๆ ตั้งแต่ชอ่ งแรกไปจนถึงช่องสุดท้าย
4. สามารถเข้าถึงช่องต่างๆ ได้โดยตรง คือ จากจานวนช่องทั้งหมดของอาร์เรย์
ที่กาหนดไว้ เราสามรถเข้าถึงข้อมูลช่องใดๆ ได้โดยตรงโดยไม่จาเป็ นต้องเริ่มต้น
ตั้งแต่ชอ่ งแรกก็ได้ โดยการระบุ ช่องที่ของอาร์เรย์ที่ตอ้ งการเข้าถึง แต่การระบุชอ่ ง
ที่ตอ้ งอยูใ่ นขอบเขตที่กาหนด เช่น กาหนดอาร์เรย์ A มีจานวน 10 ช่อง
สามารถเข้าถึงช่องใดก็ได้ต้งั แต่ ช่องที่ 1 ถึงช่องที่ 10 โดยระบุชอ่ งไว้หลังชื่อตัว
แปร
ตัวอย่าง A[5] หมายถึง อาร์เรย์ A ช่องที่ 5
การอ้างอิงตาแหน่งในสมาชิกอาร์เรย์


สาหรับการอ้างอิงตาแหน่ งสมาชิกอาร์เรย์ จะต้องเริ่มต้นด้วยชื่ออาร์เรย์และ
ตามด้วยเลขลาดับ (Position number) กากับไว้ดว้ ย ซึ่งเลขลาดับ
เหล่านี้ สามารถเรียกได้หลายชื่อด้วยกัน เช่น Subscript หรือ Index ซึ่ง
ต่างก็คือความหมายเดียวกันที่ใช้แทนกันได้ โดยเลขดรรชนี จะอยู่ภายใน
เครื่องหมาย ( ) หรือ [ ] ก็ได้ ทั้งนี้ ขึ้ นอยูก่ บั ภาษาคอมพิวเตอร์แต่ละภาษา
ในภาษาคอมพิวเตอร์อย่างภาษา C หรือ JAVA หมายเลขลาดับของ
อาร์เรย์จะเริ่มต้นด้วยหมายเลข 0 ในขณะที่ภาษา FORTRAN จะเริ่ม
ต้อนด้วยหมายเลข 1 ดังนั้นหากมีการประกาศตัวแปรอาร์เรย์อาจเกิดความ
สับสนได้ จึงจาเป็ นต้องใช้อย่างระมัดระวัง
การอ้างอิงตาแหน่งในสมาชิกอาร์เรย์

ข้อสังเกต
การอ้างอิงสมาชิกในอาร์เรย์น้ันเราสามารถเข้าถึงได้โดยตรง ดังนั้นจึง
รับประกันได้วา่ การเข้าถึงด้วยการอ่านหรือการบันทึกข้อมูลในอาร์เรย์จะมีเวลา
คงที่ ซึ่งเป็ นไปตามฟั งก์ชนั ่ O(1) แต่อย่างไรก็ตาม สาหรับในกรณีอื่นๆ
อย่างเช่น การค้นหาข้อมูลในอาร์เรย์ การหาค่าตา่ สุด หรือการหาค่าสูงสุดใน
อาร์เรย์ จะเป็ นในลักษณะเชิงเส้นซึ่งเป็ นไปตามประสิทธิภาพของฟั งก์ชนั ่ O(n)
ประเภทของอาร์เรย์




หากจะแบ่งอาร์เรย์ตามมิติของอาร์เรย์ ที่ใช้อา้ งอิงในการเขียนโปรแกรม
สามารถแบ่งได้เป็ น 3 ประเภท คือ
1. อาร์เรย์ 1 มิติ
2. อาร์เรย์ 2 มิติ
3. อาร์เรย์ 3 มิติ
อาร์เรย์ 1 มิติ (One-Dimension Array)

อาร์เรย์ 1 มิติ คือ อาร์เรย์ที่มีแถว 1 แถวแต่จะมีชอ่ งหรือคอลัมน์หลาย
คอลัมน์ ในการอ้างอิงถึง อาร์เรย์ 1 มิติ จะใช้ตวั ระบุชอ่ งที่เพียงตัวเดียว หาก
กาหนดให้อาร์เรย์ A มีแถวจานวน 1 แถว มีคอลัมน์จานวน 5 คอลัมน์
สามารถแสดงรูปอาร์เรย์ 1 มิติ ได้ดงั นี้
A[1]
A[2]
A[3]
A[4] A[5]
ขอบเขตของอาร์เรย์ 1 มิติ




ขอบเขตของอาร์เรย์ (Bound)
เลขดัชนี (Index) ในอาร์เรย์ประกอบด้วยช่วงขอบเขตของค่า ซึ่ง
ประกอบด้วย ขอบล่างสุด (Lower Bound) และ ขอบบนสุด (Upper
Bound)
ในภาษาคอมพิวเตอร์ เช่น ภาษา C, C++, C# และ JAVA ขอบเขต
ล่างสุด = 0 ในภาษา FORTRAN = 1
สาหรับการคานวณหาจานวนสมาชิกของอาร์เรย์ 1 มิติ สามารถคานวณได้
จากสูตรนี้
จานวนสมาชิก = U-L+1
ขอบเขตของอาร์เรย์ 1 มิติ
โดยที่
L
คือ ขอบล่างสุด (Lower Bound)
U
คือ ขอบบนสุด (Upper Bound)
 ตัวอย่าง
int a[5];
จานวนสมาชิก a จะได้เท่ากับ
= U-L+1
= 4-0+1
=5
การจัดเก็บอาร์เรย์ในหน่วยความจา

โครงสร้างข้อมูลอาร์เรย์ 1 มิติ จะมีการจัดเก็บข้อมูลในลักษณะต่อเนื่ องกัน
เป็ นแถว ซึ่งอาจจะนาเสนอในมุมมองแบบแนวนอนหรือแนวตั้งก็ได้ โดย
รูปแบบทัว่ ไปของโครงสร้างข้อมูลอาร์เรย์ 1 มิติ คือ
ArrayName [L:U]
โดยที่ ArrayName คือชื่อของอาร์เรย์
L
คือ ขอบล่างสุด (Lower Bound)
U
คือ ขอบบนสุด (Upper Bound)
เช่น A [0:4]
ArrayName = A, L=0, U=4
การจัดเก็บอาร์เรย์ในหน่วยความจา

ตัวอย่างเช่น a[1:10] คือ อาร์เรย์ a ที่มีจานวนช่องตั้งแต่ 1 ถึง 10 แต่
อย่างไรก็ตาม เราสามารถเขียนได้ในรูปแบบ a[10] ก็ได้ และถ้าหาก
กาหนดให้ a คืออาร์เรย์ 1 มิติ เป็ นชนิ ดข้อความจานวนเต็ม โดยมีสมาชิก
20 ตัว ด้วย ภาษา C ก็จะประกาศดังนี้
int a[20];
การจัดเก็บอาร์เรย์ในหน่วยความจา

และตาแหน่ งที่อยูข่ องสมาชิกทุกๆ ตัวในหน่ วยความจา สามารถคานวณได้
จากแอดเดรสเริ่มต้นได้
กาหนดให้
LOC(a[i]) = ตาแหน่ งแอดเดรสที่เก็บ a[i] ในหน่ วยความจา
B
= แอดเดรสเริ่มต้นของ a
w
= จานวนช่องของหน่ วยความจาที่จดั เก็บข้อมูลต่อ
หนึ่ งสมาชิก
สูตรกาคานวณคือ
LOC (a[i]) = B + w(i-L)
การจัดเก็บอาร์เรย์ในหน่วยความจา
ตัวอย่าง อยากทราบว่า a[10] ถูกจัดเก็บไว้ในหน่ วยความจาแอดเดรสใด
กาหนดให้ Base Address = 1000

w =1
ดังนั้น
LOC(a[i])
= 1000 + 1(10-0)
= 1010
การจัดเก็บอาร์เรย์ในหน่วยความจา

แสดงอาร์เรย์ a ที่จดั เก็บอยูภ่ ายในหน่ วยความจาคอมพิวเตอร์
Array
Base Address
B
B+w
B + 2w
1000
1001
1002
B + w(i-L)
B + 19w
a[0]
a[1]
a[2]
a[i]
1019
a[19]
อาร์เรย์ 1 มิติ (One-Dimension Array)

รูปแบบการประกาศตัวแปร

ชนิดข้อมูล
เช่น float score[5];

ชื่อตัวแปร [ขนาดของอาร์เรย์];
int a[50];
char name[30];
long value[100];
โดยที่ขนาดของอาร์เรย์ สามารถกาหนดเป็ นตัวเลขจานวนเต็มหรือค่าคงที่ก็ได้ (แต่เป็ นตัวแปร
ไม่ได้)
อาร์เรย์ 1 มิติ (One-Dimension Array)




การกาหนดค่าเริ่มต้นให้กบั อาร์เรย์ 1 มิติ
สามารถกาหนดค่าเริ่มต้นให้กบั array ได้ต้งั แต่ตอนประกาศตัวแปร
ค่าที่กาหนดต้องอยูใ่ นเครื่องหมาย { } และถ้ามีมากกว่า 1 ค่า ต้องแยก
จากกันด้วยเครื่องหมาย , (comma)
เช่น int A[5] = {10,20,30,40,50 } ;
อาร์เรย์ 1 มิติ (One-Dimension Array)


ถ้าในตอนประกาศตัวแปรอาร์เรย์ไม่กาหนดค่าเริ่มต้นให้กบั มันแล้ว ค่าที่
อยูใ่ นตัวแปรจะเป็ นค่าที่คา้ งอยูใ่ นหน่ วยความจาช่วงที่เราจองไว้เป็ นอาร์เรย์
นั้น
ถ้ากาหนดค่าเริ่มต้นตั้งแต่ตอนประกาศตัวแปรแต่กาหนดไม่ครบ ในกรณีที่
เป็ นอาร์เรย์แบบตัวเลขทั้งจานวนเต็มและจานวนจริง ค่าที่เหลือจะถูก
กาหนดเป็ น 0 โดยอัตโนมัติ
อาร์เรย์ 1 มิติ (One-Dimension Array)


ตัวอย่าง เช่น
บางครั้งถ้ากาหนดค่าเริ่มต้นให้แก่อาร์เรย์เลย เราไม่จาเป็ นต้องใส่ขนาดของ
อาร์เรย์ก็ได้
เช่น
float a[ ] = {1,2,3,4,5} ;
ความหมายคือ เป็ นการกาหนดตัวแปรอาร์เรย์ของจานวนจริงแบบ float
ขนาด 5 ช่อง
อาร์เรย์ 1 มิติ (One-Dimension Array)


แต่ถา้ เรากาหนดตัวแปรอาร์เรย์โดยไม่ใส่ขนาดของอาร์เรย์ และไม่ได้
กาหนดค่าเริ่มต้นให้กบั มัน
เช่น
int a[ ] ;
 ประกาศผิด!!!
นัน่ คือ เราไม่สามารถประกาศตัวแปรอาร์เรย์โดยไม่ใส่ขนาดของอาร์เรย์ได้
ยกเว้นมีการกาหนดค่าเริ่มต้นให้กบั มันตั้งแต่แรก
ตัวแปร
อาร์เรย์ 2 มิติ (Two-Dimension Array)
โครงสร้างอาร์เรย์ 2 มิติจะเป็ นอาร์เรย์ของอาร์เรย์ 1 มิติ โดยสามารถ
อธิบายได้ในรูปแบบของตารางที่ประกอบด้วยแถว (row) และคอลัมน์
(column) เชิงคณิตศาสตร์ก็คือ เมตริกซ์ (Matrix)
ชนิดข้อมูล
ชื่อตัวแปร [row][column];
เช่น int b[3][4];

อาร์เรย์ 2 มิติ (Two-Dimension Array)

การกาหนดค่าเริ่มต้นให้กบั อาร์เรย์ 2 มิติ

ตัวอย่างรูปแบบที่ 1 int
ตัวอย่างรูปแบบที่ 2 int
ตัวอย่างรูปแบบที่ 3 int

โดยที่การประกาศตัวแปรทั้ง 3 รูปแบบให้ผลลัพธ์เหมือนกัน คือ


num [2][3] = {11,12,13,21,22,23};
num [2][3] = {{11,12,13},{21,22,23}};
num [2][3] = {{11,12,13},{21,22,23}};
อาร์เรย์ 2 มิติ (Two-Dimension Array)

ข้อสังเกต
อาร์เรย์ขนาด 2 มิติขึ้นไป จะไม่ระบุขนาดได้เฉพาะมิติที่ 1 เท่านั้น
ส่วนมิติอื่นๆ ต้องมีการระบุขนาดด้วยทุกครั้ง
อาร์เรย์ 2 มิติ (Two-Dimension Array)

สาหรับการคานวณหาจานวนสมาชิกของอาร์เรย์ 2 มิติ สามารถคานวณได้
จากสูตรนี้
จานวนสมาชิก = (U1 – L1 + 1) x (U2 – L2 + 1)
โดยที่
L1
U1
L2
U2
คือ ขอบล่างสุด (Lower Bound) ของแถว
คือ ขอบบนสุด (Upper Bound) ของแถว
คือ ขอบล่างสุด (Lower Bound) ของคอลัมน์
คือ ขอบบนสุด (Upper Bound) ของคอลัมน์
อาร์เรย์ 2 มิติ (Two-Dimension Array)

ตัวอย่าง
int [5][4];
จานวนสมาชิก = (4-0+1) x (3-0+1)
=5x4
= 20
อาร์เรย์ 2 มิติ (Two-Dimension Array)



การจัดเก็บอาร์เรย์ 2 มิติในหน่ วยความจายังสามารถจัดเก็บได้ 2 วิธี คือ
1. การจัดเก็บด้วยการเรียงแถวเป็ นหลัก (Row Major Order)
2. การจัดเก็บด้วยการเรียงคอลัมน์เป็ นหลัก (Column Major
Order)
อาร์เรย์ 2 มิติ (Two-Dimension Array)


การจัดเก็บด้วยการเรียงแถวเป็ นหลัก (Row Major Order)
สูตรการคานวณ
LOC (a[i,j]) = B+w[C(i-L1)+(j-L2)
โดยที่ C คือจานวนคอลัมน์ของแถวลาดับ (RxC)
อาร์เรย์ 2 มิติ (Two-Dimension Array)
ตัวอย่าง ต้องการทราบตาแหน่ ง แถวที่ 2 คอลัมน์ที่ 1
โดยที่ B=500, w=4
จากแบบอาร์เรย์ 2 มิติ K [L1,U1][L2,U2]
ได้มีการประกาศตัวแปรอาร์เรย์ดว้ ยภาษา C ดังนี้ K[4][3]
ผลที่ได้ อาร์เรย์ K = K[0:3][0:2]
LOC(K[2,1] = 500 + 4[3(2-0)+(1-0)]
= 500 + 4[6+1]
= 500 + 28
= 528
ดังนั้นอาร์เรย์ K แถวที่ 2 คอลัมน์ที่ 1 จัดเก็บอยูใ่ นตาแหน่ งแอดเดรสที่ 528

อาร์เรย์ 2 มิติ (Two-Dimension Array)



กรณีการจัดเก็บอาร์เรย์สองมิติในหน่ วยความจาด้วยการเรียงแถวเป็ นหลัก
การจัดเรียงจะเริ่มต้นตั้งแต่แถวแรกและเรียงลาดับต่อไปในแต่ละคอลัมน์จน
ครบ จากนั้นก็ขึ้นแถวใหม่ไปเรื่อยๆ จนกระทัง่ แถวสุดท้าย
ตัวอย่าง int K[4][3];
โดยที่ B = 500 , w = 4
อาร์เรย์ 2 มิติ (Two-Dimension Array)
Base Address
B
B+w
B + 2w
.
.
.
B+[C(i- L1)+ (i- L2)
.
.
.
B + 10w
B + 11w
500
504
508
512
516
520
524
528
532
536
540
544
Array
K[0][0]
K[0][1]
K[0][2]
K[1][0]
K[1][1]
K[1][2]
K[2][0]
K[2][1]
K[2][2]
K[3][0]
K[3][1]
K[3][2]
Row 0
Row 1
Row 2
Row 3
อาร์เรย์ 2 มิติ (Two-Dimension Array)


การจัดเก็บด้วยการเรียงคอลัมน์เป็ นหลัก (Column Major Order)
สูตรการคานวณ
LOC (a[i,j]) = B+w[R(j-L2)+(i-L1)
โดยที่ R คือจานวนแถวของแถวลาดับ (RxC)
อาร์เรย์ 2 มิติ (Two-Dimension Array)
ตัวอย่าง ต้องการทราบตาแหน่ ง แถวที่ 2 คอลัมน์ที่ 1
โดยที่ B=500, w=4
จากแบบอาร์เรย์ 2 มิติ K [L1,U1][L2,U2]
ได้มีการประกาศตัวแปรอาร์เรย์ดว้ ยภาษา C ดังนี้ K[4][3]
ผลที่ได้ อาร์เรย์ K = K[0:3][0:2]
LOC(K[2,1] = 500 + 4[4(1-0)+(2-0)]
= 500 + 4[4+2]
= 500 + 24
= 524
ดังนั้นอาร์เรย์ K แถวที่ 2 คอลัมน์ที่ 1 จัดเก็บอยูใ่ นตาแหน่ งแอดเดรสที่ 524

อาร์เรย์ 3 มิติ (Three-Dimension Array)

อาร์เรย์สามมิติ คือ การนาอาร์เรย์ สองมิติมาเรียงซ้อนกันหลายๆ ชั้น
(page) ทาให้อาร์เรย์สามมิติ นอกจากจะมีคอลัมน์และแถวแล้ว ก็จะมี
ความลึกเพิ่มขึ้ น ความลึกนี้ เองที่เกิดจากการนาอาร์เรย์สองมิติมาเรียงซ้อน
กัน
อาร์เรย์ 3 มิติ (Three-Dimension Array)
ArrayName [L1:U1, L2:U2, L3:U3];
L1
U1
L2
U2
L3
U3
คือ ขอบล่างสุด (Lower Bound) ของชั้น
คือ ขอบบนสุด (Upper Bound) ของชั้น
คือ ขอบล่างสุด (Lower Bound) ของแถว
คือ ขอบบนสุด (Upper Bound) ของแถว
คือ ขอบล่างสุด (Lower Bound) ของคอลัมน์
คือ ขอบบนสุด (Upper Bound) ของคอลัมน์
อาร์เรย์ 3 มิติ (Three-Dimension Array)

ตัวอย่าง สมมติวา่ ได้มกี ารกาหนดให้ A[3,4,5] ด้วยภาษา C
int A[3][4][5]
สมาชิกแต่ละตัวบนแถวลาดับสามมิติสามารถกาหนดได้ คือ
A[0,0,0], A[0,0,1], A[i,j,k], … , A[2,3,4]
อาร์เรย์ 3 มิติ (Three-Dimension Array)

การคานวณหาสมาชิก
N = (U1 – L1 + 1) x (U2 – L2 + 1) x (U3 – L3 + 1)
หรือ จานวนสมาชิก = P x R x C
โดยที่ P
= จานวนชั้น
R
= จานวนแถว
C
= จานวนคอลัมน์

อาร์เรย์ 3 มิติ (Three-Dimension Array)



การจัดเก็บอาร์เรย์ 3 มิติในหน่ วยความจายังสามารถจัดเก็บได้ 2 วิธี คือ
1. การจัดเก็บด้วยการเรียงแถวเป็ นหลัก (Row Major Order)
2. การจัดเก็บด้วยการเรียงคอลัมน์เป็ นหลัก (Column Major
Order)
อาร์เรย์ 3 มิติ (Three-Dimension Array)


การจัดเก็บด้วยการเรียงแถวเป็ นหลัก (Row Major Order)
สูตรการคานวณ
LOC (a[i,j,k]) = B+[w x R x C(i-L1)]+[w x C(j-L2)]+[w(k-L3)]
อาร์เรย์ 3 มิติ (Three-Dimension Array)
ตัวอย่าง อาร์เรย์สามมิติชื่อ a จัดเก็บในหน่ วยความจาในรูปแถวเป็ นหลัก
ต้องการทราบตาแหน่ งแอดเดรสที่เก็บข้อมูลอาร์เรย์ a ชั้นที่ 0 แถวที่ 3
คอลัมน์ 4
โดยที่ B=500, w=4

จากแบบอาร์เรย์ 3 มิติ K [L1,U1][L2,U2][L3,U3]
ได้มีการประกาศตัวแปรอาร์เรย์ดว้ ยภาษา C ดังนี้ a[3][4][5]
ผลที่ได้ อาร์เรย์ a = a[0:2][0:3][0:4]

อาร์เรย์ 3 มิติ (Three-Dimension Array)
จากสูตร LOC (a[i,j,k]) = B+[w x R x C(i-L1)]
+[w x C(j-L2)]+[w(k-L3)]
LOC (a[0,3,4])
= 500+[4 x 4 x 5(0-0)]+[4 x 5(3-0)]+[4(4-0)]
= 500 + 0 + 60 + 16
= 576
ดังนั้นอาร์เรย์ a ชั้นที่ 0 แถวที่ 3 คอลัมน์ 4 จัดเก็บอยูใ่ นตาแหน่ ง
แอดเดรสที่ 576
อาร์เรย์ 3 มิติ (Three-Dimension Array)


การจัดเก็บด้วยการเรียงคอลัมน์เป็ นหลัก (Column Major Order)
สูตรการคานวณ
LOC (a[i,j,k]) = B+[w x R x C(i-L1)]+[w x R(k-L3)]+[w(j-L2)]
อาร์เรย์ 3 มิติ (Three-Dimension Array)
ตัวอย่าง อาร์เรย์สามมิติชื่อ a จัดเก็บในหน่ วยความจาในรูปคอลัมน์เป็ น
หลัก ต้องการทราบตาแหน่ งแอดเดรสที่เก็บข้อมูลอาร์เรย์ a ชั้นที่ 0 แถวที่
3 คอลัมน์ 4
โดยที่ B=500, w=4

จากแบบอาร์เรย์ 3 มิติ K [L1,U1][L2,U2][L3,U3]
ได้มีการประกาศตัวแปรอาร์เรย์ดว้ ยภาษา C ดังนี้ a[3][4][5]
ผลที่ได้ อาร์เรย์ a = a[0:2][0:3][0:4]

อาร์เรย์ 3 มิติ (Three-Dimension Array)
จากสูตร LOC (a[i,j,k]) = B+[w x R x C(i-L1)]
+[w x R(k-L3)]+[w(j-L2)]
LOC (a[0,3,4])
= 500+[4 x 4 x 5(0-0)]+[4 x 4(4-0)]+[4(3-0)]
= 500 + 0 + 4(16) + 12
= 566
ดังนั้นอาร์เรย์ a ชั้นที่ 0 แถวที่ 3 คอลัมน์ 4 จัดเก็บอยูใ่ นตาแหน่ ง
แอดเดรสที่ 566