โครงสร้างข้อมูลแบบอาร...

Post on 18-Oct-2019

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related