การจัดเก็บอาร์เรย์ในหน่วยความจำ

Download Report

Transcript การจัดเก็บอาร์เรย์ในหน่วยความจำ

ARRAY
บทที่ 3 อาร์ เรย์
วัตถุประสงค์ เพือ่
• บอกคุณสมบัติโครงสร้ งข้ อมูลแบบอาร์ เรย์ได้
• สามารถอ้ างอิงตาแหน่งสมาชิกและคานวณหาจานวนสมาชิกในอาร์ เรย์
ได้
• เข้ าใจหลักการจัดเก็บอาร์ เรย์ในหน่วยความจา
• สามารถคานวณหาแอดเดรสในหน่วยความจาของอาร์ เรย์หนึง่ มิตหิ รื อ
หลายมิตไิ ด้
• เห็นความสาคัญของโครงสร้ างข้ อมูลแบบอาร์ เรย์ที่เป็ นพื ้นฐานสาคัญ
ต่อโครงสร้ างข้ อมูลอื่นๆ
หัวข้ อที่บรรยาย
•
•
•
•
•
•
•
โครงสร้ างข้ อมูลแบบอาร์ เรย์
ประเภทของอาร์ เรย์
การอ้ างอิงตาแหน่งสมาชิกในอาร์ เรย์
ขอบเขตของอาร์ เรย์
การจัดเก็บอาร์ เรย์ในหน่วยความจา
ตัวอย่างการใช้ งานอาร์ เรย์
การนาอาร์ เรย์ไปใช้ งาน
โครงสร้ างข้ อมูลแบบอาร์ เรย์
• อาร์ เรย์คืออะไร
– “อาร์ เรย์ (Array) หรื อแถวลาดับ คือการรวมกลุม่ ของตัวแปรที่สามารถใช้
ตัวแปรชื่อเดียวแทนข้ อมูลสมาชิกได้ หลายๆ ตัวในคราวเดียวกันด้ วยการใช้
เลขดัชนี (Index) เป็ นตัวอ้ างอิงตาแหน่งสมาชิกบนแถวลาดับนันๆ”
้
โครงสร้ างข้ อมูลแบบอาร์ เรย์
คุณสมบัตสิ าคัญของอาร์ เรย์
• อาร์ เรย์เป็ นตัวแทนกลุม่ ของข้ อมูลที่มีความสัมพันธ์กนั
• สมาชิกในอาร์ เรย์จะมีคณ
ุ สมบัตเิ หมือนๆ กัน คือมีชนิดข้ อมูลเหมือนกัน
ทังหมด
้
• ขนาดของอาร์ เรย์จะมีขนาดคงที่ (Static) เมื่อได้ ถกู สร้ างขึ ้นครัง้ แรก
• ผู้ใช้ สามารถอ้ างอิงเพื่อเข้ าถึงข้ อมูลที่ต้องการได้ ทนั ที (Direct
Access)
ประเภทของอาร์ เรย์
• ประเภทของอาร์ เรย์เมื่อพิจารณาจากมิติของอาร์ เรย์
– อาร์ เรย์ 1 มิติ
– อาร์ เรย์หลายมิติ
• ประเภทของอาร์ เรย์เมื่อพิจารณาจากขนาดของอาร์ เรย์
– อาร์ เรย์ขนาดคงที่
– อาร์ เรย์ที่เปลี่ยนแปลงขนาดได้
ตัวอย่ างอาร์ เรย์ 3 มิติ
ตัวอย่ างอาร์ เรย์ ที่เปลีย่ นแปลงขนาดได้
การอ้ างอิงตาแหน่ งสมาชิกในอาร์ เรย์
• การอ้ างอิงตาแหน่งสมาชิกในอาร์ เรย์ จะต้ องเริ่มต้ นด้ วยชือ่ อาร์ เรย์และ
ตามด้ วยเลขลาดับ (Position Number) กากับไว้
• ภาษา C หรื อ JAVA หมายเลขลาดับจะเริ่มต้ นที่หมายเลข 0 ในขณะ
ที่ภาษา FORTRAN จะเริ่มต้ นด้ วยหมายเลข 1
• การอ้ างอิงสมาชิกในอาร์ เรย์สามารถเข้ าถึงได้ โดยตรง จึงรับประกันได้
ว่าการเข้ าถึงด้ วยการอ่านหรื อการบันทึกข้ อมูลในอาร์ เรย์จะมีเวลาคงที่
เปรียบเทียบการอ้ างอิงสมาชิกในแถวลาดับ
ขอบเขตของอาร์ เรย์
• เลขดัชนีในอาร์ เรย์ประกอบไปด้ วยช่วงขอบเขตของค่า ซึง่ ประกอบด้ วย
ขอบเขตล่างสุด (Lower Bound) และขอบเขตบนสุด (Upper
Bound)
• ภาษา C, C++, C#, JAVA ถูกกาหนดขอบเขตล่างสุดท่ากับ 0
• ภาษา FORTRAN ถูกกาหนดขอบเขตล่างสุดเท่ากับ 1
• ภาษา ADA, PL/1, PASCAL สามารถกาหนดขอบเขตล่างสุด
และขอบเขตบนสุดของอาร์ เรย์ได้ ซึง่ รวมถึงสามารถกาหนดขอบเขตค่า
ติดลบได้ อีกด้ วย
ตัวอย่ างอาร์ เรย์ ที่แสดงขอบเขต
• จานวนสมาชิก = U – L + 1
• โดยที่ U = ขอบเขตบนสุด (Upper Bound)
L = ขอบเขตล่างสุด (Lower Bound)
สู ตรการหาจานวนสมาชิกของอาร์ เรย์ 2 มิติ
• จานวนสมาชิก = (U1 - L1 + 1 ) x (U2 – L2 + 1 )
• โดยที่ U1 = ขอบเขตบนสุดของแถว
L1 = ขอบเขตล่างสุดของแถว
U2 = ขอบเขตบนสุดของคอลัมน์
L2 = ขอบเขตล่างสุดของคอลัมน์
การจัดเก็บอาร์ เรย์ ในหน่ วยความจา
• อาร์ เรย์ที่จดั เก็บอยูใ่ นหน่วยความจาคอมพิวเตอร์ จะมีลกั ษณะเป็ น
ลาดับต่อเนื่องกัน
• ใช้ เนื ้อที่ในการจัดเก็บข้ อมูลสมาชิกของแต่ละตัวในขนาดเท่าๆ กัน
• สมาชิกในอาร์ เรย์ทกุ ตัวต้ องเป็ นข้ อมูลชนิดเดียวกัน
(Homogenous Elements)
• เข้ าถึงข้ อมูลทุกตาแหน่งในอาร์ เรย์ได้ โดยตรง และใช้ เวลาเท่ากัน
การจัดเก็บอาร์ เรย์ 1 มิติ ในหน่ วยความจา
• โครงสร้ างข้ อมูลอาร์ เรย์ 1 มิติ จะจัดเก็บข้ อมูลในลักษณะต่อเนื่องกัน
เป็ นแถว ซึง่ อาจนาเสนอในมุมมองแบบแนวนอนหรื อแนวตังก็
้ ได้
• ArrayName[L:U]
• ตัวอย่างการประกาศอาร์ เรย์ในภาษา C
– int a[20];
– a[0], a[1], a[2], a[3], … , a[19]
อาร์ เรย์ 1 มิติในหน่ วยความจา
• LOC(a[i]) = B +w(i-L)
การจัดเก็บอาร์ เรย์ 2 มิติ ในหน่ วยความจา
• โครงสร้ างอาร์ เรย์สองมิตมิ ีรูปแบบตารางที่ประกอบด้ วยแถว (Row)
และคอลัมน์ (Column) ในเชิงคณิตศาสตร์ ก็คือแมทริกซ์
(Matrix)
• ArrayName[L1 : U1 , L2 : U2]
• ตัวอย่ างสรุ ปยอดขายของแต่ ละไตรมาส ตัง้ แต่ ปี 2548-2550
ปี พ.ศ.
ไตรมาสที่ 1
ไตรมาสที่ 2
ไตรมาสที่ 3
ไตรมาสที่ 4
2548
3,000,564
2,550,000
2,853,271
2,799,853
2549
4,255,844
(500,875)
(1,000,181)
1,500,800
2550
1,913,086
2,230,510
4,500,990
3,000,655
อาร์ เรย์ 2 มิติในหน่ วยความจา
• การจัดเก็บด้ วยการเรี ยงแถวเป็ นหลัก
• การจัดเก็บด้ วยการเรี ยงคอลัมน์เป็ นหลัก
• สมมติกาหนดให้ K[4,3] หรื อ K[0:3,0:2] ด้ วยภาษา C ดังนี ้
• int K[4][3];
7 8
2 −3
• กาหนดให้ อาร์ เรย์ K =
−2 4
0 6
1
5
9
3
อาร์ เรย์ 2 มิติในหน่ วยความจาแบบเรียงแถวเป็ นหลัก
• LOC(K[i,j]) = B + w[C(i-L1)+(j-L2)]
อาร์ เรย์ 2 มิติในหน่ วยความจาแบบเรียงคอลัมน์ เป็ นหลัก
• LOC(K[i,j]) = B + w[R(j-L1)+(i-L2)]
การจัดเก็บอาร์ เรย์ 3 มิติ ในหน่ วยความจา
• อาร์ เรย์สามมิติก็คือการนาอาร์ เรย์สองมิตมิ าเรี ยงซ้ อนกันหลายๆ ชัน้
(Page) ทาให้ นอกจากจะมีแถวและคอลัมน์แล้ วก็จะมีความลึกเพิ่มขึ ้น
อีก
• ArrayName[L1 : U1 , L2 : U2 , L3 : U3 ]
• ตัวอย่างกาหนดให้ S[3,4,5] หรื อ S[0:2, 0:3, 0:4] ด้ วยภาษา C
• int S[3] [4] [5];
• S[0,0,0], S[0,0,1], S[i,j,k], … , S[2,3,4]
สู ตรการหาจานวนสมาชิกของอาร์ เรย์ 3 มิติ
• จานวนสมาชิก=(U1 - L1 + 1 )x(U2 – L2 + 1 )x(U3 – L3 + 1 )
หรื อ
• จานวนสมาชิก = P x R x C
• โดยที่ P = ชัน้ (Page)
R = แถว (Row)
C = คอลัมน์ (Column)
อาร์ เรย์ S แบบสามมิติ ขนาด 3x4x5
อาร์ เรย์ 3 มิติในหน่ วยความจาแบบเรียงแถวเป็ นหลัก
• LOC(S[i,j,k]) = B + [w x R x C(i-L1)]
+ [w x C(j-L2)]
+ [w(k-L3)]
อาร์ เรย์ 3 มิติในหน่ วยความจาแบบเรียงแถวเป็ นหลัก
ตัวอย่ างการใช้ งานอาร์ เรย์
• ตัวอย่างการใช้ งานอาร์ เรย์ขนาดคงที่ (TestArray)
• ตัวอย่างการใช้ งานอาร์ เรย์ที่เปลี่ยนแปลงขนาดได้
(TestDynamicArray)
• พิมพ์และรันโปรแกรมผลลัพธ์
• นาเสนอหน้ าชันเรี
้ ยน
การนาอาร์ เรย์ ไปใช้ งาน
• อาร์ เรย์เหมาะกับงานที่ต้องมีการอ่านข้ อมูลอยูเ่ สมอๆ หรือข้ อมูลถูก
แก้ ไขเปลี่ยนแปลงอยูเ่ สมอๆ โดยที่จานวนของข้ อมูลไม่เปลีย่ นแปลง
• ตัวอย่างเช่น การเก็บข้ อมูลของนักเรี ยนในแต่ละชันเรี
้ ยน ซึง่ จานวน
นักเรี ยนจะคงที่ตลอดปี การศึกษา แต่จะเข้ าถึงข้ อมูลนักเรียนเสมอเพื่อ
เรี ยกดูหรื อแก้ ไขข้ อมูล
• ถ้ าเป็ นอาร์ เรย์ที่เปลี่ยนแปลงขนาดได้ จะเหมาะกับข้ อมูลที่ไม่ทราบ
จานวนของข้ อมูลทังหมดตั
้
งแต่
้ แรก
• ถูกนาไปเป็ นโครงสร้ างพื ้นฐานของโครงสร้ างข้ อมูลชนิดอื่นๆ
สรุปท้ ายบทที่ 3
• อาร์ เรย์ หรือแถวลาดับ คือการรวมกลุม่ ของตัวแปรที่สามารถใช้ ตวั
แปรชื่อเดียวกันแทนข้ อมูลสมาชิกได้ หลายๆ ตัวในคราวเดียวกัน ด้ วย
การใช้ เลขดัชนีเป็ นตัวอ้ างอิงตาแหน่งสมาชิก
• คุณสมบัตขิ องอาร์ เรย์
– อาร์ เรย์เป็ นตัวแทนกลุม่ ของข้ อมูลที่มีความสัมพันธ์กนั
– สมาชิกในอาร์ เรย์จะมีคณ
ุ สมบัติหรื อมีชนิดข้ อมูลที่เหมือนกันทังหมด
้
– ขนาดของอาร์ เรย์จะมีขนาดคงที่เมื่อได้ ถกู สร้ างขึ ้น
– อาร์ เรย์เป็ นโครงสร้ างข้ อมูลที่ผ้ ใู ช้ สามารถอ้ างอิงเพื่อเข้ าถึงข้ อมูลที่ต้องการได้
ทันที
สรุปท้ ายบทที่ 3
• เลขดัชนีในอาร์ เรย์ประกอบด้ วยช่วงขอบเขตของค่า
– ขอบเขตล่างสุด
– ขอบเขตบนสุด
• โครงสร้ างของอาร์ เรย์ 1 มิติ คือ เป็ นแถวลาดับต่อเนื่องกัน
• โครงสร้ างของอาร์ เรย์ 2 มิติ คือ เป็ นรูปแบบตาราง หรื อแมทริกซ์
• โครงสร้ างของอาร์ เรย์ 3 มิติ คือ นาเอาอาร์ เรย์ 2 มิติ มาเรี ยงซ้ อนกัน
โดยมีความลึกเพิ่มขึ ้น
Any Questions ?