data structure intro
TRANSCRIPT
![Page 1: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/1.jpg)
รายว ชา ง40206 โครงสร างข อม ลและขนตอนวธ
โรงเรยนมหดลวทยานสรณ
![Page 2: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/2.jpg)
ความร เบ องต นของโครงสร างข อมลและขนตอนวธ
![Page 3: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/3.jpg)
“ความหมาย โครงสราง”ขอมล
• การรวมประเภทขอมล (Data Type) เขาไวดวยกน จนกลาย
เปนกลมประเภทขอมล และมนยามความสมพนธภายในกลมขอมล
อยางชดเจน•การรวมกลมนอาจเปนการรวมกลม
กนระหวางขอมลประเภทเดยวกน ตางประเภทกน หรอตางโครงสราง
ขอมลกนกได
![Page 4: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/4.jpg)
“ ”ความหมาย อลกอรธม
• ลำาดบขนตอนวธในการทำางานของโปรแกรมเพอแกปญหาใดปญหา
หนง ซงถาปฏบตตามขนตอนอยาง ถกตองแลว จะตองสามารถชวยแก
ปญหาหรอประมวลผลตามตองการไดสำาเรจ
![Page 5: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/5.jpg)
ประเภทของโครงสรางขอมล• ดานกายภาพ
– Primitive Data Type เช น char, int, float– Structure Data Type เช น array, struct
• ดานตรรกกะ- Linear Data Structure - Non-linear Data Structure
A C K S5
3 8
-1 4 12
-1 3 4 5 8 12
![Page 6: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/6.jpg)
![Page 7: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/7.jpg)
วตถประสงคของการศกษาโครงสรางขอมลและขนตอนวธ
โปรแกรมทำางานไดอยางรวดเร ว
ใชเน อท หนวยความจำานอยทสด
![Page 8: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/8.jpg)
เทคนคทชวยในการออกแบบ
• ผงงาน (Flowchart)– ผงงานระบบ (System Flowchart)– ผงงานโปรแกรม (Program Flowchart)
• รหสเทยม (Pseudocode)– ใชอธบายการทำางานของอลกอรธม ทำาใหไมตองเขยน
อธบายดวย code– ไมขนกบภาษาคอมพวเตอรภาษาใดภาษาหนง– อาจเปนภาษาไทยหรอภาษาอนกได แตการใชภาษาองกฤษจะสะดวกทสด
![Page 9: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/9.jpg)
Pseudocode• เปนคำาสงทมลกษณะการเขยนใกลเคยงกบภาษา
องกฤษ แตมโครงสรางเกอบจะเปนภาษาโปรแกรมเชน– เรมตนอาจใหมคำาวา BEGIN จบลงใหใช END– อาน เขยนขอมลอาจใช READ และ PRINT – การทดสอบเงอนไขอาจใช IF , ELSE , ELSEIF – การทำาซำาอาจใช WHILE , DO ENDWHILE เปนตน
![Page 10: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/10.jpg)
ตวอยาง Pseudocode
BEGIN
READ A, B
SUM = A+B
IF SUM > 10 THEN
PRINT SUM
ELSE
PRINT A-B
END
![Page 11: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/11.jpg)
ตวอยาง PseudocodeAlgorithm arrayMax(A,n)
Input: An array A storing n integers.
Output: The maximum element in A.
currentMax < A[0]
for I <- 1 to n-1 do
if currentMax < A[i] then
currentMax <- A[i]
return currentMax
![Page 12: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/12.jpg)
ตวอยาง Pseudocode
![Page 13: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/13.jpg)
การวเคราะหประสทธภาพของอลกอรธม
• Space/Memory :
ใชเนอทความจำามากนอยแคไหน• Time
เวลาทใชในการประมวลผล
![Page 14: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/14.jpg)
การว เคราะห Space Complexity การวเคราะหวาจะตองใชหนวยความจำา
ทงหมดเทาไรในการประมวลผลอลกอรธมนน • รองร บจ ำานวนขอม ลท ส งเข ามาประมวลผล (Input Data) ได มากทส ดเท าใด เพ อให อ ลกอร ธมน นสามารถประมวลผลไดอย
•ทราบขนาดของหนวยความจำาท จะต องใชในการ ประมวลผลอลกอร ธ ม เพ อไม ให กระทบกบการ
ทำางานของคนอน
•เพ อเล อกค ณลกษณะของคอมพวเตอร ท จะใชต ดต งโปรแกรมทพ ฒนาขนได อย างเหมาะสม
![Page 15: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/15.jpg)
องคประกอบของ Space Complexity • Instruction Space
– จำานวนของหนวยความจำาทคอมไพเลอร จ ำาเป นต องใชขณะทำาการคอมไพลโปรแกรม
• Data Space – จำานวนหนวยความจำาทต องใชส ำาหร บเก บค า
คงท และต วแปรทงหมดทต องใชในการประมวลผลโปรแกรม
• Environment Stack Space – จำานวนหนวยความจำาทต องใชในการเก บ
ผลลพธ ของขอม ลเอาไว เพ อรอเวลาทจะน ำา ผลลพธ น นกล บไปประมวลผลอกคร ง ( พบใน
recursive function)
![Page 16: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/16.jpg)
Data Space• Static memory allocationStatic memory allocation
จำานวนของหนวยความจำาท ต องใชอย างแนนอน ไมม การเปล ยนแปลง ประกอบดวยหนวยความจำาท ใช เก บค า
คงทและต วแปรประเภท array – เช น การประกาศตวแปร int a, b; char s[10], c;
• Dynamic memory allocationDynamic memory allocation
จำานวนของหนวยความจำาท ใช ในการประมวลผล สามารถเปล ยนแปลงได และจะทราบจำานวนหนวยความ
จำาท จะใชก ต อเม อโปรแกรมกำาล งท ำางานอย– เช น การใช pointer และม การจองเน อท ในหนวยความจ ำาด วยค ำาส ง malloc();
int *p;
p = malloc(sizeof(int)*2);
![Page 17: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/17.jpg)
ตวอย างการว เคราะห Space Complexity {
int num1, num2, temp;
temp = num1;
num1 = num2;
num2 = temp;
} ใชหนวยความจำา 6 bytes
![Page 18: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/18.jpg)
ตวอย างการว เคราะห Space Complexity int factorial(int n)
{
if (n==0)
return 1;
else
return (n * factorial(n-1));
} ใชหนวยความจำา 4 × Max{1, n}
คา 4 คำานวณมาจาก หนวยความจำาส ำาหร บเก บ address 2 bytes และต วแปร ชนด integer อก 2 bytes
![Page 19: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/19.jpg)
factorial(4)
4 x factorial(3)
factorial(0) = 1
1
1x1=1
2x1=2
3x2=6
4x6=24
หาคา 4! โดยใชrecursive
3 x factorial(2)factorial(3)
2 x factorial(1)factorial(2)
1 x factorial(0)factorial(1)
![Page 20: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/20.jpg)
การว เคราะห Time Complexity คอ เวลาทเคร องคอมพวเตอร ต องใช
ในการประมวลผลอลกอร ธม
ว เคราะหเพ อ ... ประมาณเวลาทงหมดทต องใชในโปรแกรมได มงประเด นการแกไขไปทอ ลกอร ธ มท ใช เวลาใน
การประมวลผลนานๆ ทำาให ไม ต องแก ไขทงโปรแกรม
โปรแกรมคอมพวเตอร ท ท ำางานแบบ Interactive เล อกค ณลกษณะของคอมพวเตอร ท จะใชต ดต ง
โปรแกรมทพ ฒนาขนได อย างเหมาะสม
??
![Page 21: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/21.jpg)
เวลาในการประมวลผลของโปรแกรมCompile TimeCompile Time คอ เวลาทใชในการตรวจ
สอบไวยากรณ (syntax) ของ code วาเขยนได ถกตองหรอไม
Run Time Run Time หรอ หรอ Execution TimeExecution Time คอเวลาทเครองคอมพวเตอรใชในการประมวลผล
![Page 22: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/22.jpg)
การว เคราะห Time Complexity ดวยว ธ การนบต วด ำาเน นการ
แบบ Linear Loops แบบ Logarithmic Loops แบบ Nested Loops
![Page 23: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/23.jpg)
แบบ Linear Loops อลกอรธมมการทำางานแบบวนรอบ (Loop) โดย
แตละ loop จะมการเพมหรอลดคาในปรมาณทคงทเชน x = 1
Loop (x <= 2000) x = x+5
x = 1Loop (x <= 2000) x = x+1
ถาให f(n) แทนประสทธภาพ และ n แทนจำานวนรอบ การทำางาน สามารถเขยนเปนสมการวดประสทธภาพขอ
งอลกอรธมแบบ Linear loop ไดดงนf(n) = n
![Page 24: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/24.jpg)
แบบ Logarithmic Loops อลกอรธมจะทำางานแบบ Loop โดยการทำางาน
ภายในแตละ loop จะเพมหรอลดคาเปนเทาตว x = 1Loop (x < 1000)
x = x*2
x = 1000Loop (x >= 1)
x = x/2
ถาให f(n) แทนประสทธภาพ และ n แทนจำานวนรอบ การทำางาน สามารถเขยนเปนสมการวดประสทธภาพได
ดงน f(n) = [logn]
![Page 25: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/25.jpg)
แบบ Nested Loops
คอ อ ลกอร ธ มท ม loop ซอนอยภายในloop โดยประส ทธ ภาพของอลกอร ธ มก จะมค า
เทาก บจ ำานวน loop ทงหมดทจะต องประมวลผล ซงหาไดจากการเอาจ ำานวน loop ทซอนก นมา
คณกน
f(n) = n2 f(n) = n3
![Page 26: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/26.jpg)
Big-O Notation
• การวเคราะหอลกอรธม จะใชวธหาจำานวนครงของ การทำางานของโปรแกรม โดยมกจะสนใจคาโดย
ประมาณเทานน ซงจะใชสญลกษณวา O เรยกวา บกโอ (big O) ซงเปนสญลกษณทางคณตศาสตร
ทมาจากคำาวา Order of Magnitude
•O(N), O(logN), O(N2), O(1)
![Page 27: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/27.jpg)
Big-O Notation
• แนวความคดของบกโอ จะดจากคาทมผลกระทบมากทสดเพยงคาเดยว
• คาอนๆทเกยวของจะมผลตอฟงกชนนอยกวา จง ไมสนใจ และไมสนใจคาคงทดวย
ตวอยาง หาคาบกโอของ N4 + 10N – 5
ถา f(N) = N4 + 10N – 5
O(f(N)) = O(N4)
![Page 28: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/28.jpg)
ตวอยาง หาคาบกโอของ 100N +1
ถา f(N) = 100N +1
O(f(N)) = O(N)
ตวอยาง หาคาบกโอของ N/5 +100
ถา f(N) = N/5 +100
O(f(N)) = O(N)
![Page 29: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/29.jpg)
ตวอยาง หาคาบกโอของ N3 + 2N3 + 10
ถา f(N) = N3 + 2N3 + 10
O(f(N)) = O(N3)
ตวอยาง หาคาบกโอของ 100
ถา f(N) = 100
O(f(N)) = O(1)
![Page 30: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/30.jpg)
การวเคราะหความเรวของ Algorithm
log n n n log n n2 n3 2n
0 1 0 1 1 21 2 2 4 8 42 4 8 16 64 163 8 24 64 512 2564 16 64 256 4096 65,5365 32 160 1,024 32,768 4,294,967,296
เร ว ชา
![Page 31: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/31.jpg)
log n n n log n n2 n3 2n
0 1 0 1 1 21 2 2 4 8 42 4 8 16 64 163 8 24 64 512 2564 16 64 256 4096 65,5365 32 160 1,024 32,768 4,294,967,296
1
10
100
1000
10000
100000
n
n2
n log n
n
log n
n32n
![Page 32: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/32.jpg)
Running time calculationsA simple Example
int sum(int n)
{ int i, partialSum;
partialSum = 0; //1
for(i=1;i<N;i++) //2
partialSum += i*i*i; //3
return partialSum;
}
-> Count for 1 unit per time executed
-> Count for 2N+1 units
-> 4N units
The total is 6N+2
This function is O(N)
![Page 33: Data structure intro](https://reader033.vdocuments.net/reader033/viewer/2022052910/559b37dc1a28abf73e8b45ab/html5/thumbnails/33.jpg)
Running time calculationsA simple Example
int factorial(int n)
{ int fac
if((n==0)||(n=1))
fac = 1;
else
fac = n*factorial(n-1);
}
-> Running time = 1
-> เรยกตวเอง N ครง
This function is O(N)