โครงสร้างข้อมูลแบบอาร...
TRANSCRIPT
โโครงสรางขอมลแบบอารเรย (Array)
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ความหมายของอารเรย (Array)
ใ เนอทหนวยความจาทเรยงตอกนใชเกบขอมลชนดเดยวกน เนอทหนวยความจานมชอเดยวกน แตแยกตาแหนงหรอระบเนอทหนวยความจานมชอเดยวกน แตแยกตาแหนงหรอระบตาแหนงของขอมลแตละตวดวยการใชดรรชนกากบ (Index)
หรอ Subscript ซงเราสามารถ ทราบขนาดและมต (Dimension) ของ Array เหลานนไดดวยการสงเกตทดรรชน(Dimension) ของ Array เหลานนไดดวยการสงเกตทดรรชนกากบ (Index) หรอ Subscript p
เปนโครงสรางทงายทสด
เปนโครงสรางแบบสแตตค (Static Data Structure)
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ความหมายของอารเรย (Array) ตอ
ป ไป ลกษณะของ Array จะประกอบไปดวย
1 ชอของ Array 1. ชอของ Array
2. ขนาดของ Array
3. คาสงสด (Upper bound) และคาตาสด (Lower bound) ของ Array
ชนดของ Array จะประกอบไปดวย ชนดของ Array จะประกอบไปดวย
1. Array 1 มต y
2. Array หลายมต
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
การคานวณหาจานวนสมาชกของ Array 1 มตจานวนสมาชกของ Array 1 มต
ไป ลกษณะทวไปของ Array 1 มต A (L : U)
เมอ A คอชอของ Array เมอ A คอชอของ Array
L คอ ดรรชนกากบตาสดของ Array (Lower bound)
U คอ ดรรชนกากบสงสดของ Array (Upper bound)
คานวณไดจากสตร
(U) (L) 1 จานวนสมาชก = ดรรชนกากบสงสด (U) - ดรรชนกากบตาสด(L) + 1
จานวนสมาชก = U-L+1
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยาง : การคานวณหาจานวนสมาชกของ Array 1 มตจานวนสมาชกของ Array 1 มต
ตวอยาง
o A[-8..4] = 4 - (-8) + 1 = 13 Elemento A[ 8..4] 4 ( 8) + 1 13 Element
• A(L:U)
» L = -8
» U = 4
» จานวนสมาชก(Element) = U-L+1» จานวนสมาชก(Element) = U-L+1
• -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4
o B[2..12] = 12 - 2 + 1 = 11 Element
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES» L = 2 , U = 12
การคานวณหาจานวนสมาชกของ Array 2 มต
ไป ลกษณะทวไปของ Array 2 มต A(L1:U1,L2:U2)
เมอ A คอชอของ Array เมอ A คอชอของ Array
L1 คอดรรชนกากบตาสดของมตท 1
U1 คอดรรชนกากบสงสดของมตท 1
L2 คอดรรชนกากบตาสดของมตท 2
U2 คอดรรชนกากบสงสดของมตท 2 U2 คอดรรชนกากบสงสดของมตท 2
คานวณไดจากสตร คานวณไดจากสตร
จานวนสมาชก = (U1 - L1 + 1) * (U2 - L2 + 1)
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยาง : การคานวณหาจานวนสมาชกของอารเรย 2 มตการคานวณหาจานวนสมาชกของอารเรย 2 มต
l A[-3..1,-2..1] = (1-(-3)+1)*(1-(-2)+1) = 20 Element
o U1 = 1 , L1 = -3 , U2 = 1 , L2 = -2 o U1 1 , L1 3 , U2 1 , L2 2
o Element = [ U1-L1+1] * [U2-L2+1]
o = [ 1-(-3)+1 ] * [ 1 – (-2) +1]
o = [ 1 + 3 + 1] * [ 1 + 2 +1]
o = 5 * 4 = 20 o = 5 4 = 20
B[-3..4,-2..2] = (4-(-3)+1)*(2-(-2)+1) = 40 Element
C[-15..-3,-3..-1]
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยาง : การคานวณหาจานวนสมาชกของอารเรย 2 มตการคานวณหาจานวนสมาชกของอารเรย 2 มต
C[-15..-3,-3..-1]
U1 3 L1 15 U2 1 L2 3 U1 = -3 , L1 = -15 , U2 = -1 ,L2 =-3
Element = [ U1 – L1 + 1 ] * [U2 – L2 + 1 ] Element = [ U1 L1 + 1 ] [U2 L2 + 1 ]
= [ (-3) – (-15) + 1 ] * [ (-1) – (-3) + 1]
= [ (-3) + 15 + 1 ] * [ (-1) + 3 + 1]
= [ (-3) + 16 ] * [ (-1) + 4 ]
= [ 13 ] * [ 3] = 39
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
การคานวณหาเนอหนวยความจาA ของ Array 1 มต
ไ ส คานวณไดจากสตร
เนอท = ( U- L +1) * ขนาดของขอมล 1 Element
ตวอยาง
ใ ใ จงหาเนอหนวยความจาทใชในการเกบขอมลของ Num[1..5] และกาหนดใหขนาดของขอมลเปน 2 Byte ตอ 1 Element
วธทา
ส ( U L 1) * 1 El t จากสตร เนอท = ( U- L +1) * ขนาดของขอมล 1 Element
แทนคาจะได = (5-1+1)*2 = 10 Byte
เพราะฉะนนเนอททงหมดเทากบ 10 Byte
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
การคานวณหาเนอหนวยความจาของ Array 2 มตของ Array 2 มต
คานวณไดจากสตร คานวณไดจากสตร เนอท = (U1 - L1 + 1) * (U2 - L2 + 1) * ขนาดของขอมล 1 Element
ตวอยาง จงหาเนอหนวยความจาทใชในการเกบขอมลของ Num[ 3 2 1 5] และ จงหาเนอหนวยความจาทใชในการเกบขอมลของ Num[-3..2,-1..5] และ
กาหนดใหขนาด ของขอมลเปน 2 Byte ตอ 1 Element
วธทา จากสตร เนอท = (U1 - L1 + 1) * (U2 - L2 + 1) * ขนาดของขอมล 1Element
แทนคาจะได = (2-(-3)+1)*(5-(-1)+1)*2 = 6 * 7 * 2 Byte = 84 Byte
เพราะฉะนนเนอททงหมดเทากบ 84 Byte เพราะฉะนนเนอททงหมดเทากบ 84 Byte
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
การคานวณตาแหนงทอยของ Array
หมายถง การคานวณหาตาแหนงทอยของ Array เพอเขาถงขอมล ของ Array โดยจะอางองกบตาแหนงทอยของขอมลขอมล ของ Array โดยจะอางองกบตาแหนงทอยของขอมลแรก (Base address) ของ Array
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ฟงกชนการคานวณหาตาแหนงทอยของ Array 1 มตของ Array 1 มต
สตรการคานวณ
Add A[ ] C Address A[i] = Lo + (I-L) * C o เมอ Lo คอ ตาแหนงทอยของขอมลแรกของ Array
o I คอ Array ตวทตองการหาตาแหนง o I คอ Array ตวทตองการหาตาแหนง
o L คอ คาตาสดของดรรชนกากบของ Array
o C คอ ขนาดของหนวยความจาทใชเกบขอมลแตละตว
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยางการคานวณหาตาแหนงทอยของ Arrayการคานวณหาตาแหนงทอยของ Array
โ A[-8:-1] และแตละ Element มขนาดพนท 4 Bits โดยตาแหนงของ Address ของ A[-8] อยท Address 1,000 จงตาแหนงของ Address ของ A[ 8] อยท Address 1,000 จงหาตาแหนงของ Address ของ (กาหนดให Address 1 ตาแหนงมคาเทากบ 1 Byte และ 1 Byte = 8 Bits )
A[-1] = ?
A[-4] = ?
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยางท 1: การคานวณหาตาแหนงทอยของ Array การคานวณหาตาแหนงทอยของ Array
โ โจทย
ถา A เปน A[1 3] โดยกาหนดใหเรมเกบขอมลทตาแหนง 100 ถา A เปน A[1..3] โดยกาหนดใหเรมเกบขอมลทตาแหนง 100 ขอมลแตละคาใชเนอท 10 Byte จงหาตาแหนงทอยของ A[3]
วธทา
หา Address ของ A[3]
o สตร Address A[i] Lo+(I L)*C o สตร Address A[i] = Lo+(I-L)*C
o แทนคา Address A[3] = 100 + (3-1) * 10 = 120
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยางท 2: การคานวณหาตาแหนงทอยของ Arrayการคานวณหาตาแหนงทอยของ Array
โจทย โจทย จงหาตาแหนงทอยของ A[0] และ [A2] ใน Array A[-2..4] เมอ
ใ ใ ใ กาหนดให A[-2] อยท 1500 ในหนวยความจาและสมาชกแตละตวใชเนอท 25 Byte
วธทา หา Address ของ A[0]หา Address ของ A[0]
o สตร Address A[i] = Lo+(I-L)*Cแทนคา Address A[0] = 1500 + (0-(-2)) * 25 = 1550แทนคา Address A[0] = 1500 + (0-(-2)) 25 = 1550
หา Address ของ A[2]o สตร Address A[i] = Lo+(I-L)*Cแทนคา Address A[2] = 1500 + (2-(-2)) * 25 = 1600
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยางท 2: การคานวณหาตาแหนงทอยของ Arrayการคานวณหาตาแหนงทอยของ Array
ใ ไ จากตวอยางสามารถแสดงการแทนทในหนวยความจาไดดงน
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ฟงกชนการคานวณหาตาแหนงทอยของ Array 2 มตของ Array 2 มต
มลกษณะการเขาถง 2 ลกษณะคอ
1 อนดบเรยงตามสดมภ(Column Major Order) จะเขาถงขอมล1. อนดบเรยงตามสดมภ(Column Major Order) จะเขาถงขอมลโดยยดสดมภเปนหลกโดยเปลยนแถว(Row)กอน
o เชน Num[1,1] Num[2,1] Num[1,2] Num[2,2]
2. อนดบเรยงตามแถว (Row Major Order) จะเขาถงขอมลโดยj ยดแถวเปนหลกโดยจะเปลยนสดมภกอน
o เชน Num[1,1] Num[1,2] Num[2,1] Num[2,2]
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
อนดบเรยงตามสดมภ(Column Major Order)
สตรการคานวณ
Address (A[I J]) Lo+[(J L2)*(U1 L1+1)*C]+[(I L1)*C] Address (A[I,J]) = Lo+[(J-L2)*(U1-L1+1)*C]+[(I-L1)*C]
o Lo คอ ตาแหนงทอยของขอมลแรกของ Array y
o I คอ Array ตวทตองการหาตาแหนงใน Row
o J คอ Array ตวทตองการหาตาแหนงใน Column
o L1 คอ คาตาสดของดรรชนกากบของ Array มตท 1
o U1 คอ คาสงสดของดรรชนกากบของ Array มตท 1 o U1 คอ คาสงสดของดรรชนกากบของ Array มตท 1
o C คอ ขนาดของหนวยความจาทใชเกบขอมลแตละตว
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยางการคานวณหาตาแหนงทอยของ Array 2 มต อนดบเรยงตามสดมภของ Array 2 มต อนดบเรยงตามสดมภ
ตวอยาง
จงหาตาแหนงของ Num[2 3] เมอกาหนดให Num เปน Array จงหาตาแหนงของ Num[2,3] เมอกาหนดให Num เปน Array Num[1..2,1..5]ให Lo=100 และ C=10
วธทา
สตร
o Address (A[I J]) Lo+[(J L2)*(U1 L1+1)*C]+[(I L1)*C]o Address (A[I,J]) = Lo+[(J-L2)*(U1-L1+1)*C]+[(I-L1)*C]
แทนคา
o Address (Num[2,3]) = 100+[(3-1)*(2-1+1)*10]+[(2-1)*10]
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
= 150
ตวอยางท 2: การคานวณหาตาแหนงทอยของ Arrayการคานวณหาตาแหนงทอยของ Array
ใ ไ จากตวอยางสามารถแสดงการแทนทในหนวยความจาไดดงน
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
อนดบเรยงตามแถว (Row Major Order)
สตรการคานวณ
Address (A[I J]) Lo+[(I L1)*(U2 L2+1)*C]+[(J+L2)*C] Address (A[I,J]) = Lo+[(I-L1)*(U2-L2+1)*C]+[(J+L2)*C]
o Lo คอ ตาแหนงทอยของขอมลแรกของ Array y
o I คอ Array ตวทตองการหาตาแหนงใน Row
o J คอ Array ตวทตองการหาตาแหนงใน Column
o L1 คอ คาตาสดของดรรชนกากบของ Array มตท 1
o L2 คอ คาตาสดของดรรชนกากบของ Array มตท 2o L2 คอ คาตาสดของดรรชนกากบของ Array มตท 2
o U2 คอ คาสงสดของดรรชนกากบของ Array มตท 2
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUESo C คอ ขนาดของหนวยความจาทใชเกบขอมลแตละตว
อนดบเรยงตามแถว (Row Major Order)
Address (A[I,J]) = Lo+[(J-L2)*(U1-L1+1)*C]+[(I-L1)*C]
Address (A[I J]) Lo+[(I L1)*(U2 L2+1)*C]+[(J+L2)*C] Address (A[I,J]) = Lo+[(I-L1)*(U2-L2+1)*C]+[(J+L2)*C]
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ตวอยางการคานวณหาตาแหนงทอยของ Array 2 มต อนดบเรยงตามแถว ของ Array 2 มต อนดบเรยงตามแถว
ตวอยาง
จงหาตาแหนงของ Num[2 3] เมอกาหนดให Num เปน Array จงหาตาแหนงของ Num[2,3] เมอกาหนดให Num เปน Array Num[1..2,1..5] ให Lo=100 และ C=10
วธทา
สตร
o สตร Address (A[I J]) Lo+[(I L1)*(U2o สตร Address (A[I,J]) = Lo+[(I-L1)*(U2-L2+1)*C]+[(J+L2)*C]
แทนคา
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
o Address (Num[2,3]) = 100+[(2-1)*(5-1+1)*10]+[(3-1)*10] = 170
ตวอยางท 2: การคานวณหาตาแหนงทอยของ Arrayการคานวณหาตาแหนงทอยของ Array
ใ ไ จากตวอยางสามารถแสดงการแทนทในหนวยความจาไดดงน
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
การเขาถงขอมลใน Array
ใ ป ใ ให A เปน Array ทเกบอยในหนวยความจา
หากเราตองการจะพมพรายการของแตละ Element หรอนบ หากเราตองการจะพมพรายการของแตละ Element หรอนบจานวน Element ใน Array A ทมลกษณะของขอมลทกาหนด
ทาไดโดยการเขาถงขอมล ซงเปนการตดตอกบขอมลในแต ละ Element ของ A ซงจะม Algorithm ในการเขาถงดงน
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
Algorithm การเขาถงขอมลใน Array
ใ 1. กาหนดให Num มคาเทากบคาตาสดของ Array (Lower Bound)
2 ตรวจสอบวา Num มคามากกวาคาสงสดของ Array (Upper 2. ตรวจสอบวา Num มคามากกวาคาสงสดของ Array (Upper Bound)หรอไม
- ถาไมใหไปทาขอ 3 และ4
ถาใชใหไปทาขอ 5 - ถาใชใหไปทาขอ 5
3. แสดงขอมลของ Array ณ ตาแหนง Num y
4. เพมคา Num = Num+1 และขนไปทาขอ 2
5. จบการทางาน
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
Flowchart การเขาถงขอมลใน Array
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
การแทรกและการลบขอมลใน Array
ให A เปน Arr ทอยในหนวยความจาของคอมพวเตอร ให A เปน Array ทอยในหนวยความจาของคอมพวเตอร
การแทรกเปนการเพมขอความ 1 Element เขาไปใน Array
การลบเปนการเอาขอมล 1 Element ออกจาก Array
การเพมขอมลใน Array จะทาไดงายทสดหากเปนการเพมในสวนทายของ Array และพนทหนวยความจา ทจดไวใหญพอ แตถาหากเปนการเพมในสวนArray และพนทหนวยความจา ทจดไวใหญพอ แตถาหากเปนการเพมในสวนตรงกลางของ Array จะตองมการยาย Element ทเหลอลงไปดานลาง เพอใหเกดชองวางสาหรบ Element ตวใหมเกดชองวางสาหรบ Element ตวใหม
ในการลบขอมลใน Array จะทาไดงายทสดหากเปนการลบในสวนทายของ Array แตถาเราตองการจะลบขอมลทอยตรงกลางจะตองมการยาย ElementArray แตถาเราตองการจะลบขอมลทอยตรงกลางจะตองมการยาย Elementทเหลอขนมา
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
ใบงาน : การเขยนโปรแกรมโดยใชโครงสรางขอมลแบบอารเรยโดยใชโครงสรางขอมลแบบอารเรย
โป เขยนโปรแกรมรบคาเขามา 10 แลวทาการแสดงผลทง 10 คานนคานน
เขยนโปรแกรมรบคาเขามา 10 คาแลวบอกวาคาใดคอคาทนอยทสด
เขยนโปรแกรมรบคาเลขทและคะแนน เขามา 10 คนแลว เขยนโปรแกรมรบคาเลขทและคะแนน เขามา 10 คนแลวทาการบอกวาเลขทใดไดคะแนนนอยทสด
ICOM114: DATA STRUCTURES AND COMPUTER PROGRAMMING TECHNIQUES
แผนบริหารการสอนประจ าบทที่ 6 จิตวิทยาเด็กที่มีความต้องการพิเศษelearning.psru.ac.th/courses/317/บทที่
บทที่ 6 การวิเคราะห์การถดถอยอย่างง่ายและสหสัมพันธ์ (Simple ...elearning.psru.ac.th/courses/61/บทที่6