5. ประเภทของโครงสร้างข้อมูล
• ด้านกายภาพ
– Primitive Data Type เช่น char, int, float
– Structure Data Type เช่น array, struct
• ด้านตรรกกะ
- Linear Data Structure - Non-linear Data Structure
A C K S
5
3 8
-1 4 12
-1 3 4 5 8 12
23. แบบ Linear Loops
อัลกอริธึมมีการทำางานแบบวนรอบ (Loop) โดย
แต่ละ loop จะมีการเพิ่มหรือลดค่าในปริมาณที่คงที่
เช่น x = 1
Loop (x <=
2000)
x = x
+5
x = 1
Loop (x <=
2000)
x = x
+1
ถ้าให้ f(n) แทนประสิทธิภาพ และ n แทนจำานวนรอบ
การทำางาน สามารถเขียนเป็นสมการวัดประสิทธิภาพขอ
งอัลกอริธึมแบบ Linear loop ได้ดังนี้
f(n) = n
24. แบบ Logarithmic Loops
อัลกอริธึมจะทำางานแบบ Loop โดยการทำางาน
ภายในแต่ละ loop จะเพิ่มหรือลดค่าเป็นเท่าตัว
x = 1
Loop (x < 1000)
x = x*2
x = 1000
Loop (x >= 1)
x = x/2
ถ้าให้ f(n) แทนประสิทธิภาพ และ n แทนจำานวนรอบ
การทำางาน สามารถเขียนเป็นสมการวัดประสิทธิภาพได้
ดังนี้ f(n) = [logn]
31. log n n n log n n2
n3
2n
0 1 0 1 1 2
1 2 2 4 8 4
2 4 8 16 64 16
3 8 24 64 512 256
4 16 64 256 4096 65,536
5 32 160 1,024 32,768 4,294,967,296
1
10
100
1000
10000
100000
n
n2
n log n
n
log n
n3
2n
32. Running time calculations
A 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)
33. Running time calculations
A 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)