SlideShare a Scribd company logo
1 of 76
โครงสร้างข้อมูลและขั้น
ตอนวิธี
Data Structures and
Algorithms
อ.ธารารัตน์ พวงสุวรรณ
คณะวิทยาศาสตร์และศิลปศาสตร์
มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศ
จันทบุรี
 ดาวน์โหลดเอกสารการเรียนได้ที่
http://www.chanthaburi.buu.ac.th/~thararat
 E-mail : thararat@buu.ac.th
คำาอธิบายรายวิชา
 โครงสร้างข้อมูลแบบต่างๆ ลิสต์ สแตก แถวคอย
ต้นไม้ กราฟ เซ็ต และ ฮีฟ
 การเรียงลำาดับข้อมูลด้วยอัลกอริทึมแบบ บับเบิล การ
แทรก เชลล์ ฮีพ ควิก
 การค้นหาด้วยอัลกอริทึมแบบตามลำาดับ แบบไบนารี
ใช้ตารางแฮช
 โครงสร้างต้นไม้และการดำาเนินการกับข้อมูลใน
โครงสร้างต้นไม้
 โครงสร้างกราฟและการดำาเนินการกับข้อมูลใน
โครงสร้างกราฟ
วัตถุประสงค์รายวิชา
 เพื่อให้ผู้เรียนเข้าใจโครงสร้างข้อมูลรูป
แบบต่าง ๆ และนำาไปใช้ได้อย่างเหมาะสม
 เพื่อให้ผู้เรียนเข้าใจวิธีการประมวลผล
โครงสร้างข้อมูลรูปแบบต่าง ๆ
 เพื่อให้ผู้เรียนสามารถวิเคราะห์และออกแบ
บอัลกอริทึมโดยใช้โครงสร้างข้อมูลชนิด
ต่าง ๆ ได้
 เพื่อให้ผู้เรียนสามารถใช้โปรแกรมภาษาใน
การเขียนโปรแกรมประยุกต์โครงสร้าง
ข้อมูลได้
สถานภาพรายวิชาและ
เงื่อนไขรายวิชา
 วิชาเอกบังคับ
 บุรพวิชา วิชา 291100 การเขียน
โปรแกรมเบื้องต้น
เนื้อหาวิชา
 ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริ
ทึม
 โครงสร้างข้อมูลแบบต่างๆ ได้แก่ ลิสต์ สแตก แถว
คอย ต้นไม้ กราฟ เซ็ต และ ฮีฟ
 การเรียงลำาดับข้อมูลด้วยอัลกอริทึมแบบต่าง ๆ
ได้แก่ บับเบิล การแทรก เชลล์ ฮีพ ควิก
 การค้นหาข้อมูลด้วยอัลกอริทึมแบบต่าง ๆ ได้แก่
แบบตามลำาดับ แบบไบนารี ใช้ตารางแฮช
 โครงสร้างต้นไม้และการดำาเนินการกับข้อมูลใน
โครงสร้างต้นไม้
 โครงสร้างกราฟและการดำาเนินการกับข้อมูลใน
โครงสร้างกราฟ
 การประยุกต์ใช้โครงสร้างข้อมูลเพื่อแก้ปัญหาใน
กิจกรรมการเรียนการสอน
 บรรยายเนื้อหาบทเรียนในชั้นเรียน
 อภิปรายและถามตอบในชั้นเรียน
 ฝึกเขียนอัลกอริทึมและเขียนโปรแกรมเพื่อ
ทดสอบอัลกอริทึม
 ทำาแบบฝึกหัด
 การทดสอบย่อยระหว่างเรียน
การวัดผลและประเมินผล
 สอบกลางภาค 35%
 สอบปลายภาค 30%
 ทดสอบย่อย 15%
 แบบฝึกหัดและการเข้าชั้นเรียน
20%
การสอน
และหนังสืออ่าน
ประกอบ
 Richard, F. Gilberg and Behrouz A.
Forouzan (2005). Data structures :
a pseudocode approach with C.
2rd ed. Boston : Thomson Course
Technology.
 Oberon (2004). algorithms and
Data structures.
ความรู้เบื้องต้นเกี่ยวกับ
โครงสร้างข้อมูลและอัลกอริทึม
เนื้อหา
 ความหมายของโครงสร้างข้อมูล
 ประเภทของโครงสร้างข้อมูล
 พื้นฐานการเขียนอัลกอริทึมด้วย
Pseudocode
 ตัวอย่างการเขียนอัลกอริทึมด้วย
Pseudocode
 การประเมินประสิทธิภาพของอัลกอริทึม
ความหมายของข้อมูล
 ข้อมูล (Data)
ข้อเท็จจริงที่เกี่ยวข้องกับบุคคล สถานที่ สิ่งของ
หรือเหตุการณ์ ที่สนใจ
 ประเภทของข้อมูล
 แบ่งตามลักษณะของข้อมูล
 แบ่งตามลักษณะการใช้งาน
ประเภทของข้อมูล
 แบ่งตามลักษณะของข้อมูล
 Numeric
 Alphabetic
 Alphanumeric
ประเภทของข้อมูล
 แบ่งตามลักษณะการใช้งาน
 ข้อมูลที่ใช้ในการคำานวณ

Numeric หรือข้อมูลที่เป็นตัวเลขล้วน ๆ
 ข้อมูลที่ไม่นำาไปใช้ในการคำานวณ

Character หรือ String เช่น อันดับที่
เลขประจำาตัว บ้านเลขที่ หมายเลข
โทรศัพท์ รหัสไปรษณีย์ เป็นต้น
ส่วนประกอบของประเภท
ข้อมูล
 A set of values
 A set of
operations on
valuesType Values Operations
Integer -∞,...,-2,-
1,0,1,2,..., ∞
+, -, *, /, ++,
--, ...
Floating
point
-∞,..., 0.0, ... ,
∞
+, -, *, /,...
character 0, ..., ‘A’,
‘B’, ..., ‘a’,’b’,...
<, >, ...
Abstract data type (ADT)
 หมายถึงประเภทข้อมูลซึ่งแสดงถึงระบบ
การจัดการข้อมูล โดยแสดงถึงบริการ
และกฎเกณฑ์ในการจัดการข้อมูลนั้น ๆ
แต่ไม่ได้กล่าวถึงวิธีการสร้างบริการ
ต่าง ๆ (คือการนำามาใช้ ไม่ใช่การ
ศึกษาวิธีสร้าง)
Abstract data type (ADT)
 หลักการของ abstraction
 We know what a data type can do
 How it is done is hidden
 ADT จะประกอบไปด้วยการประกาศข้อมูล
(Data Declaration) ที่รวมกับ Operations
เข้าด้วยกัน ทำาให้เกิดเป็นรูปร่างของโครงสร้าง
โดยตั้งอยู่บนพื้นฐานการซ่อนรายละเอียดและ
ข้อมูล
Abstract data type (ADT)
 ลักษณะของ ADT แบ่งตามความสัมพันธ์ใน
ข้อมูล
 ข้อมูลเชิงเดี่ยว (Atomic data)
 ข้อมูลประกอบ (Composite data)
Atomic data
 คือข้อมูลที่ประกอบด้วยค่าเดียวที่ไม่
สามารถแบ่งส่วนข้อมูลนี้ออกไปเพื่อสื่อ
ความหมายได้อีก เช่น เลข จำานวนเต็ม
อายุ เพศ เป็นต้น
Composite data
 คือข้อมูลที่สามารถแตกออกเป็นฟิลด์ย่อยๆ
ได้ และสิ่งที่แตกออกไปสามารถสื่อความ
หมายได้ เช่น เบอร์โทรศัพท์ หมายเลข
ครุภัณฑ์ รหัสนักศึกษา เป็นต้น
ประเภทของ ADT
 แบ่งตามรูปแบบโครงสร้าง
 ประเภทข้อมูลนามธรรมที่ไม่มีลำาดับของ
ข้อมูลซ้ายขวา เช่น เซ็ต
 ประเภทข้อมูลนามธรรมเชิงเส้น (linear
ADT, linear data structure) หมายถึง
ประเภทข้อมูลอย่างย่อที่มีลำาดับหนึ่งอัน
เช่น ก่อน-หลัง ซ้าย-ขวา เช่น รายการโยง
กองซ้อน คิว
 ประเภทข้อมูลอย่างย่อที่มีลำาดับสองอัน
ประเภทของ ADT
 แบ่งตามการซำ้ากันและลำาดับของข้อมูล
 ไม่อนุญาตให้ซำ้ากันได้ เรียกว่า เซ็ต ได้แก่ ตา
รางแฮช ต้นไม้บางชนิด
 ไม่มีลำาดับของข้อมูล เรียกว่า Collection
 ใช้ลำาดับตามการเข้าออกข้อมูล

เข้าก่อนออกก่อน (First In First Out:
FIFO) เรียกว่า คิว หรือ แถวคอย

เข้าก่อนออกทีหลัง (First In Last Out:
FILO) เรียกว่า กองซ้อน
ลักษณะของข้อมูลที่ดี
 Accuracy
ข้อมูลต้องมีความถูกต้อง ซึ่งเป็นสิ่งสำาคัญ
อันดับหนึ่งในขบวนการประมวลผลข้อมูล
 Completeness
ข้อมูลที่ถูกต้องเพียงอย่างเดียวไม่อาจ
เพียงพอสำาหรับการประมวล จะต้องสมบูรณ์
ทั้งรายการและจำานวน รวมทั้งต้องครอบคลุม
ประชากรหรือตัวแปรในกลุ่มที่เกี่ยวข้องด้วย
ลักษณะของข้อมูลที่ดี (ต่อ)
 Timeliness
ใช้เวลาในการประมวลผลน้อย ความเร็ว
เป็นตัวชี้ความทันสมัยต่อเหตุการณ์ และ
ความเป็นปัจจุบันของข้อมูล
 Compatibles
ความเข้ากันได้กับเครื่องมือประมวลผล
ข้อมูลดิบที่จะนำาเข้าสู่ขบวนการประมวลผล
จำาเป็นต้องเข้ากันได้กับเครื่องมือที่ใช้ในการ
ประมวลผลนั้น ๆ
ความหมายของโครงสร้าง
ข้อมูล
 เป็นการจัดระบบความสัมพันธ์ระหว่างข้อมูล
ในแบบต่าง ๆ กัน เพื่อให้เหมาะสมกับการ
ดำาเนินการกับข้อมูลในระบบงานนั้น ๆ และ
เพื่อให้การใช้เนื้อที่ในหน่วยความจำาหลัก
เกิดประโยชน์สูงสุด
 การรวมกันของข้อมูลเชิงเดี่ยวและข้อมูลเชิง
ประกอบเข้าด้วยกัน
เป็นกลุ่มพร้อมกับการกำาหนดความสัมพันธ์
 ตัวอย่างโครงสร้างข้อมูล

ตัวอย่างการกำาหนด
โครงสร้างข้อมูล
โครงสร้างข้อมูลแบบอาร์เรย์
 ชุดข้อมูลต้องมีค่าชนิดใดชนิดหนึ่ง
 ชนิดของข้อมูลจะต้องอธิบายลักษณะข้อมูล
ได้โดยตรง และลำาดับข้อมูลต้องมีความ
สัมพันธ์กับข้อมูลที่เก็บ
 เช่น อาร์เรย์ที่ใช้เก็บข้อมูลของเดือน โดย
ลำาดับที่ 0 เก็บ มกราคม, ลำาดับที่ 1 เก็บ
กุมภาพันธ์ เป็นต้น
ความสำาคัญของโครงสร้าง
ข้อมูล
• มีความสำาคัญต่อการประมวลผลด้วย
คอมพิวเตอร์ เพราะข้อมูลที่ถูกจัดเก็บอย่าง
เป็นระเบียบและขั้นตอนการเข้าถึงอย่างมี
ระบบจะทำาให้สะดวกในการจัดการกับข้อมูล
ตามที่ต้องการ
การเลือกใช้โครงสร้างข้อมูล
• การพัฒนาโปรแกรมเพื่อให้ได้โปรแกรมที่มี
ประสิทธิภาพในการทำางานสูงสุด ต้องคำานึง
ถึงโครงสร้างข้อมูลที่ใช้
• กรณีที่โปรแกรมไม่ยุ่งยากซับซ้อนมาก ผู้
เขียนโปรแกรมไม่จำาเป็นต้องคำานึงถึง
โครงสร้างข้อมูลมากนัก เพราะโครงสร้าง
ข้อมูลอาจจะไม่มีผลกับประสิทธิภาพในการ
ทำางานของโปรแกรม
• ในระบบงานใหญ่ที่มีความสลับซับซ้อนมาก
การดำาเนินการกับข้อมูลใน
โครงสร้างข้อมูล
 การเพิ่มข้อมูล
 การลบข้อมูล
 การเปลี่ยนแปลงแก้ไขข้อมูล
 การค้นหาข้อมูล
 การแสดงข้อมูล
 การเรียงลำาดับข้อมูล
ประเภทของโครงสร้างข้อมูล
 Primitive data structure
เป็นข้อมูลที่มีค่าเฉพาะประเภทใดประเภท
หนึ่ง เช่น แบบเลขจำานวนเต็ม (integer)
แบบตรรกะ (boolean) แบบตัว
อักษร(character) เป็นต้น
 Simple data structure
เกิดจากการนำาเอาข้อมูลโครงสร้างพื้นฐาน
ประกอบขึ้นมาเป็นชุดของข้อมูลที่มีความ
สัมพันธ์กันในลักษะใดลักษณะหนึ่ง เช่น
ข้อมูลแบบอาร์เรย์
ประเภทของโครงสร้างข้อมูล
 Compound data structure
เกิดจากการนำาเอาข้อมูลองค์ประกอบอย่าง
ง่ายประกอบขึ้นเป็นข้อมูลที่มีโครงสร้างซับ
ซ้อนขึ้น แบ่งเป็นแบบ linear structure
และ nonlinear structure
ประเภทของโครงสร้างข้อมูล
Primitiv
e
data
structur
e
Simple
data
structur
e
Compound
data structure
linear nonline
ar
Integer
Boolean
Array
String
Stack
Queue
Graph
General
อัลกอริธึม (Algorithm)
 ลำาดับขั้นตอนวิธีในการทำางานของโปรแกรม
เพื่อแก้ปัญหาใดปัญหาหนึ่ง ซึ่งถ้าปฏิบัติตาม
ขั้นตอนอย่างถูกต้องแล้ว จะสามารถช่วยแก้
ปัญหา หรือประมวลผลตามต้องการได้สำาเร็จ
 ตัวอย่างเครื่องมือที่ใช้ในการแสดงอัลกอริธึม
 การเขียนซูโดโค้ด (Pseudo Code)
 การเขียนผังงาน (Flowchart)
การเขียน Pseudocode
 ซูโดโคด (PseudoCode)
การนำาคำาในภาษาอังกฤษมาแสดงอัลกอริทึม
หรือลำาดับขั้นตอนการทำางานของโปรแกรมเพื่อแก้
ปัญหาใดปัญหาหนึ่ง โดยเรียบเรียงให้สามารถสื่อ
ความหมายให้เข้าใจได้ว่าแต่ละขั้นตอนการแก้
ปัญหานั้นทำาได้อย่างไร
 รูปแบบการเขียนซูโดโคด
 การรับข้อมูล และการแสดงข้อมูล
 การคำานวณ
 การเปรียบเทียบ
 การทำางานแบบวนซำ้า

ลักษณะของ Pseudocode
 เป็นเครื่องมือที่นิยมใช้ในการสร้างอัลกอริทึม
 มีรูปแบบคล้ายประโยคภาษาอังกฤษ
 ไม่สามารถรันเป็นโปรแกรมได้โดยตรง
 ไม่ขึ้นอยู่กับภาษาคอมพิวเตอร์ ภาษาใดภาษาหนึ่ง
 มีรูปแบบประโยคที่เป็นโครงสร้าง เพื่อใช้อธิบาย
รายละเอียดการพัฒนา
 อัลกอริทึมเน้นที่ประโยคกิจกรรม เพื่อใช้ในการ
ทำางานของโปรแกรมเป็นสำาคัญ
 สามารถสร้างประโยคแบบเรียงคำาสั่ง(Sequence)
กำาหนดทางเลือก
(Selection) และการทำางานเป็นรอบ(Iteration)
Pseudocode
 Algorithm header
 Purpose
 Condition
 Return
 Keywords :
 Pre : ความต้องการของพารามิเตอร์ที่จะรับเข้า
มาทำางาน
 Post : กิจกรรมที่เกิดขึ้นและสถานะของ output
parameters
 Return : คือเงื่อนไขที่มีการส่งกลับไปหลังจาก
ตัวอย่าง Algorithm
Heading
Algorithm deviation
This algorithm print deviation from mean
for series
pre nothing
post average and number with
their deviation printed
return nothing
* จากตัวอย่าง แสดงว่า อัลกอริทึมนี้ไม่มีการรับค่า
พารามิเตอร์ใด ๆ เข้ามาทำางานในอัลกอริทึม
* การทำางานของอัลกอริทึมนี้ จะมีการพิมพ์ค่า
ย่างการเขียนอัลกอริทึมด้วย Pseudocod
Algorithm addNumber(number1,number2)
This algorithm print sum of two numbers
pre number1 and number2 are
numbers to calculate sum of them
post two number and sum of two
numbers printed
return nothing
* จากตัวอย่าง แสดงว่า อัลกอริทึมนี้มีการรับค่า
พารามิ เตอร์เข้ามาทำางาน 2 ตัวคือ number 1
และ number2
* การทำางานของอัลกอริทึมนี้ จะมีการพิมพ์ค่า
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การรับข้อมูล
รูปแบบ read var1, var2,
var3, …
ตัวอย่าง read id
 การแสดงข้อมูล
รูปแบบ print var1, var2,
var3, …
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การกำาหนดค่า
รูปแบบ set variable to
expression/constant
เช่น
set count to 0
set average to total/2
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การคำานวณ
รูปแบบ
compute variable =
expression / constant หรือ
compute add variable to
expression/constant
ตัวอย่าง
compute total = num1 +
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การเปรียบเทียบ
กรณีที่ 1 เปรียบเทียบระหว่างค่า 2 ค่า
รูปแบบ if (condition) then
true statement(s)
else
false statement(s)
endif
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การเปรียบเทียบ
กรณีที่ 1 เปรียบเทียบระหว่างค่า 2 ค่า
ตัวอย่าง if x > 0 then
read x
else
compute sum = x
+ y
endif
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การเปรียบเทียบ
กรณีที่ 2 เปรียบเทียบทางเลือกหลาย
ทาง
รูปแบบ case variable of
a : a-statement(s)
b : b-statement(s)
c : c-statement(s)
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การเปรียบเทียบ
กรณีที่ 2 เปรียบเทียบทางเลือกหลาย
ทาง
ตัวอย่าง case grade of
4 : print ‘A’
3 : print ‘B’
2 : print ‘C’
endcase
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การทำางานแบบวนซำ้า
รูปแบบ loop (เงื่อนไข)
action
end loop
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การทำางานแบบวนซำ้า
 Do- while loop : เปรียบเทียบเงื่อนไขก่อน
ทำาคำาสั่งภายใน
รูปแบบ do while (condition)
statement(s)
enddo
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การทำางานแบบวนซำ้า
 Do- while loop : เปรียบเทียบเงื่อนไขก่อน
ทำาคำาสั่งภายใน
ตัวอย่าง read data
do while (data <> 0)
read data
enddo
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การทำางานแบบวนซำ้า
 Until loop : ทำาคำาสั่งภายในก่อนที่จะมีการ
เปรียบเทียบเงื่อนไข
รูปแบบ repeat
statement(s)
until (condition)
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การทำางานแบบวนซำ้า
 Until loop : ทำาคำาสั่งภายในก่อนที่จะมีการ
เปรียบเทียบเงื่อนไข
ตัวอย่าง n = 0
repeat
readid,name
print id,name
compute n = n + 1
until (n=5)
การเขียน Pseudocode
ในส่วน Statement
Constructs
 การข้ามไปทำาคำาสั่งอื่น
รูปแบบ label :
statement(s)
goto label
ตัวอย่าง L :
read x
if(x < 0) then goto
L
ตัวอย่าง การเขียน
Algorithm ด้วย
Pseudocode
การประเมินผลของโปรแกรม
 การใช้เนื้อที่ในหน่วยความจำา
ขึ้นอยู่กับการเลือกโครงสร้างข้อมูล และ
การแทนข้อมูล
 ระยะเวลาที่ใช้ในการทำางาน
ขึ้นอยู่กับอัลกอริธึมที่เลือกใช้
โปรแกรมที่ดี
ใช้เวลา
ในการ
ทำางานน้อย
ใช้เนื้อที่ใน
หน่วยความ
จำาน้อย
การประเมินประสิทธิภาพขอ
งอัลกอริธึม
 Performance Analysis
การวิเคราะห์ประสิทธิภาพของอัลกอริธึม
จะใช้วิธีการวิเคราะห์วิธีการทำางานของอัลกอ
ริธึม
 Performance Measurement
การวัดประสิทธิภาพของอัลกอริธึม จะ
เป็นการวัดผลจากการทดลองจริง
วิเคราะห์ประสิทธิภาพของอัล
กอริธึม
 วิเคราะห์หน่วยความจำาที่ต้องใช้ในการ
ประมวลผล หรือเรียกว่าวิเคราะห์ Space
Complexity
 วิเคราะห์เวลาที่จะต้องใช้ในการประมวลผล
หรือเรียกว่า Time Complexity
การวิเคราะห์ประสิทธิภาพของอัล
กอริธึม
 Space/Memory :
ใช้เนื้อที่ความจำามากน้อยแค่ไหน
 Time
เวลาที่ใช้ในการประมวลผล
การวิเคราะห์ SPACE
COMPLEXITY
การวิเคราะห์ว่าจะต้องใช้หน่วยความจำา
ทั้งหมดเท่าไรในการประมวลผลอัลกอริธึมนั้น
•รองรับจำานวนข้อมูลที่ส่งเข้ามาประมวลผล (Input
Data)ได้มากที่สุดเท่าใด เพื่อให้อัลกอริธึมนั้น
สามารถประมวลผลได้อยู่
•ทราบขนาดของหน่วยความจำาที่จะต้องใช้ในการ
ประมวลผลอัลกอริธึม เพื่อไม่ให้กระทบกับการ
ทำางานของคนอื่น
•เพื่อเลือกคุณลักษณะของคอมพิวเตอร์ที่จะใช้ติด
องค์ประกอบของ SPACE
COMPLEXITY
 Instruction Space
 จำานวนของหน่วยความจำาที่คอมไพเลอร์
จำาเป็นต้องใช้ขณะทำาการคอมไพล์โปรแกรม
 Data Space
 จำานวนหน่วยความจำาที่ต้องใช้สำาหรับเก็บค่า
คงที่ และตัวแปรทั้งหมดที่ต้องใช้ในการประมวล
ผลโปรแกรม
 Environment Stack Space
 จำานวนหน่วยความจำาที่ต้องใช้ในการเก็บ
ผลลัพธ์ของข้อมูลเอาไว้ เพื่อรอเวลาที่จะนำา
DATA SPACE
 Static memory allocationStatic memory allocation
จำานวนของหน่วยความจำาที่ต้องใช้อย่างแน่นอน
ไม่มีการเปลี่ยนแปลง ประกอบด้วยหน่วยความจำาที่
ใช้เก็บค่าคงที่และตัวแปรประเภท array
 เช่น การประกาศตัวแปร int a, b; char s[10],
c;
 Dynamic memory allocationDynamic memory allocation
จำานวนของหน่วยความจำาที่ใช้ในการประมวลผล
สามารถเปลี่ยนแปลงได้ และจะทราบจำานวนหน่วย
ความจำาที่จะใช้ก็ต่อเมื่อโปรแกรมกำาลังทำางานอยู่
 เช่น การใช้ pointer และมีการจองเนื้อที่ในหน่วยความ
ประสิทธิภาพของอัลกอริทึม
(Algorithm Efficiency)
 มักถูกกำาหนดมาในรูปแบบของฟังก์ชัน ด้วยการ
พิจารณาจากจำานวนของ
element ที่ถูกโปรเซส และชนิดของลูปที่ใช้งาน
 แทนด้วยฟังก์ชันดังนี้ f(n) = efficiency
 ประสิทธิภาพของ Linear Loop คือ f(n) = n
 ประสิทธิภาพของ Logarithm Loop คือ f(n) =
logn
 ประสิทธิภาพของ Linear Logarithm Loop คือ
f(n) = n(logn)
 ประสิทธิภาพของ Quadratic Loop คือ f(n) = n2
ประสิทธิภาพของ Linear
Loops
 Linear Loop คือ loop ที่มีการเพิ่มหรือลดค่าให้
กับตัวแปรที่ควบคุม loop
 ตัวอย่าง for (i=0; i<1000; i++)
application code
 ประสิทธิภาพคือจำานวนรอบของการวน loop แต่
บางกรณีอาจจะไม่ได้เป็นแบบนั้น
เช่น for (i=0; i<1000; i+=2)
application code
ประสิทธิภาพ f(n) = n/2
 Loop facter ยิ่งสูง จำานวนรอบของการ
ประสิทธิภาพของ
Logarithmic Loops
 Logarithmic loops คือ loop ที่มีการคูณหรือ
หารตัวควบคุม loop
 ประสิทธิภาพของ Logarithm Loop คือ f(n) =
logn
 ตัวอย่าง

Multiply Loops
for ( i = 1; i < 1000; i *= 2)
application code

Divide Loops
ประสิทธิภาพของ Nested
Loops
 ประสิทธิภาพหรือจำานวนรอบของ nested
loops โดยทั่วไป จะได้
Iterations = outer loop iterations
X inner loop iterations
ตัวอย่าง
for ( i = 0; i < 10; i++)
for ( j = 1; j <= 10; j++)
application code
ประสิทธิภาพของ Nested
Loops
 Nested Loops คือ loop ที่มีการ
ซ้อน loop
 Nested Loops แบ่งได้เป็น 3 แบบย่อย คือ
1. ประสิทธิภาพของ Linear Logarithm
Loop คือ f(n) = n(logn)
ตัวอย่าง
for ( i = 0; i < 10; i++)
for ( j = 1; j <= 10; j*=2)
application code
ประสิทธิภาพของ Nested
Loops
2. ประสิทธิภาพของ Quadratic Loop คือ
f(n) = n2
ตัวอย่าง
for ( i = 0; i < 10; i++)
for ( j = 0; j < 10; j++)
application code
ประสิทธิภาพของ Nested
Loops
3. ประสิทธิภาพของ Dependent
Quadratic Loop คือ f(n) = n(n+1)/2
ตัวอย่าง
for ( i = 0; i < 10; i++)
for ( j = 0; j < i; j++)
application code
BIG-O NOTATION
 การวิเคราะห์อัลกอริธึม จะใช้วิธีหาจำานวน
ครั้งของการทำางานของโปรแกรม โดยมักจะ
สนใจค่าโดยประมาณเท่านั้น ซึ่งจะใช้
สัญลักษณ์ว่า O เรียกว่า บิ๊กโอ (big O) ซึ่ง
เป็นสัญลักษณ์ทางคณิตศาสตร์ที่มาจากคำาว่า
Order of Magnitude
สัญลักษณ์บิ๊กโอ (Big-O
Notation)
 7 มาตรฐานเพื่อการวัดผลประสิทธิภาพของอัลกอริ
ทึมประกอบด้วย
 • O(logn)
 • O(n)
 • O(n(logn))
 • O(n2
)
 • O(nk
)
 • O(cn
)
 • O(n!)
BIG-O NOTATION
 แนวความคิดของบิ๊กโอ จะดูจากค่าที่มีผลก
ระทบมากที่สุดเพียงค่าเดียว
 ค่าอื่นๆที่เกี่ยวข้องจะมีผลต่อฟังก์ชันน้อยกว่า
จึงไม่สนใจ และไม่สนใจค่าคงที่ด้วย
ตัวอย่าง หาค่าบิ๊กโอของ N4
+ 10N – 5
ถ้า f(N) = N4
+ 10N – 5
O(f(N)) = O(N4
)
BIG-O NOTATION
ตัวอย่าง หาค่าบิ๊กโอของ 100N +1
ถ้า f(N) = 100N +1
O(f(N)) = O(N)
BIG-O NOTATION
ตัวอย่าง หาค่าบิ๊กโอของ N3
+ 2N3
+ 10
ถ้า f(N) = N3
+ 2N3
+ 10
O(f(N)) = O(N3
)
ตัวอย่าง หาค่าบิ๊กโอของ 100
ถ้า f(N) = 100
O(f(N)) = O(1)
สัญลักษณ์บิ๊กโอ (Big-O
Notation)
สัญลักษณ์บิ๊กโอ (Big-O
Notation)
การวิเคราะห์ความเร็วของ
ALGORITHM
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
เร็ว ช้า
ตัวอย่างการหา Big-O
O(n)

More Related Content

What's hot

AI SUPERPOWERS_Sample
AI SUPERPOWERS_SampleAI SUPERPOWERS_Sample
AI SUPERPOWERS_Sample
Piyapong Sirisutthanant
 
จริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ต
จริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ตจริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ต
จริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ต
jobasketball
 
สมการเชิงเส้นตัวแปรเดียว
สมการเชิงเส้นตัวแปรเดียวสมการเชิงเส้นตัวแปรเดียว
สมการเชิงเส้นตัวแปรเดียว
Piyanouch Suwong
 
5 ประชากร,กลุ่มตัวอย่าง
5 ประชากร,กลุ่มตัวอย่าง5 ประชากร,กลุ่มตัวอย่าง
5 ประชากร,กลุ่มตัวอย่าง
Nitinop Tongwassanasong
 
การเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆ
การเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆการเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆ
การเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆ
Jintana Kujapan
 
การ์ตูนทำแผนเอา
การ์ตูนทำแผนเอาการ์ตูนทำแผนเอา
การ์ตูนทำแผนเอา
Darika Roopdee
 

What's hot (20)

ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 4
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 4ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 4
ฟิสิกส์ 5 ไฟฟ้าสถิตย์ ตอนที่ 4
 
สแตกและคิว (Stack & queue)
สแตกและคิว (Stack & queue)สแตกและคิว (Stack & queue)
สแตกและคิว (Stack & queue)
 
Computing science unit 3
Computing science unit 3Computing science unit 3
Computing science unit 3
 
AI SUPERPOWERS_Sample
AI SUPERPOWERS_SampleAI SUPERPOWERS_Sample
AI SUPERPOWERS_Sample
 
จริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ต
จริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ตจริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ต
จริยธรรมและคุณธรรมในการใช้คอมพิวเตอร์และอินเทอร์เน็ต
 
การจัดการห้องเรียนออนไลน์ด้วย Google Classroom
การจัดการห้องเรียนออนไลน์ด้วย Google Classroomการจัดการห้องเรียนออนไลน์ด้วย Google Classroom
การจัดการห้องเรียนออนไลน์ด้วย Google Classroom
 
Weka classification
Weka classificationWeka classification
Weka classification
 
โครงสร้างข้อมูลแบบต้นไม้
โครงสร้างข้อมูลแบบต้นไม้โครงสร้างข้อมูลแบบต้นไม้
โครงสร้างข้อมูลแบบต้นไม้
 
สมการเชิงเส้นตัวแปรเดียว
สมการเชิงเส้นตัวแปรเดียวสมการเชิงเส้นตัวแปรเดียว
สมการเชิงเส้นตัวแปรเดียว
 
การสำรวจน้ำ Globe tu64
การสำรวจน้ำ Globe tu64การสำรวจน้ำ Globe tu64
การสำรวจน้ำ Globe tu64
 
06 classification 2 bayesian and instance based classification
06 classification 2 bayesian and instance based classification06 classification 2 bayesian and instance based classification
06 classification 2 bayesian and instance based classification
 
5 ประชากร,กลุ่มตัวอย่าง
5 ประชากร,กลุ่มตัวอย่าง5 ประชากร,กลุ่มตัวอย่าง
5 ประชากร,กลุ่มตัวอย่าง
 
ERP
ERPERP
ERP
 
เทคโนโลยีสารสนเทศและการสื่อสาร
เทคโนโลยีสารสนเทศและการสื่อสารเทคโนโลยีสารสนเทศและการสื่อสาร
เทคโนโลยีสารสนเทศและการสื่อสาร
 
บทที่ 9 ระบบการชำระเงินในอีคอมเมิร์ซ
บทที่ 9 ระบบการชำระเงินในอีคอมเมิร์ซบทที่ 9 ระบบการชำระเงินในอีคอมเมิร์ซ
บทที่ 9 ระบบการชำระเงินในอีคอมเมิร์ซ
 
60 ลำดับและอนุกรม ตอนที่2_การประยุกต์ลำดับเลขคณิตและเรขาคณิต
60 ลำดับและอนุกรม ตอนที่2_การประยุกต์ลำดับเลขคณิตและเรขาคณิต60 ลำดับและอนุกรม ตอนที่2_การประยุกต์ลำดับเลขคณิตและเรขาคณิต
60 ลำดับและอนุกรม ตอนที่2_การประยุกต์ลำดับเลขคณิตและเรขาคณิต
 
การเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆ
การเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆการเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆ
การเชื่อมโยงคณิตศาสตร์กับศาสตร์อื่นๆ
 
66 การนับและความน่าจะเป็น ตอนที่1_การนับเบื้องต้น
66 การนับและความน่าจะเป็น ตอนที่1_การนับเบื้องต้น66 การนับและความน่าจะเป็น ตอนที่1_การนับเบื้องต้น
66 การนับและความน่าจะเป็น ตอนที่1_การนับเบื้องต้น
 
การ์ตูนทำแผนเอา
การ์ตูนทำแผนเอาการ์ตูนทำแผนเอา
การ์ตูนทำแผนเอา
 
Basic m5-2-chapter2
Basic m5-2-chapter2Basic m5-2-chapter2
Basic m5-2-chapter2
 

Viewers also liked

การวิเคราะห์อัลกอริทึม
การวิเคราะห์อัลกอริทึมการวิเคราะห์อัลกอริทึม
การวิเคราะห์อัลกอริทึม
guestc3a629f6
 
โครงสร้างข้อมูลแบบสแต็ก
โครงสร้างข้อมูลแบบสแต็กโครงสร้างข้อมูลแบบสแต็ก
โครงสร้างข้อมูลแบบสแต็ก
waradakhantee
 
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึมความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
waradakhantee
 
ความรู้ คอมพิวเตอร์ พื้นฐาน
ความรู้ คอมพิวเตอร์ พื้นฐานความรู้ คอมพิวเตอร์ พื้นฐาน
ความรู้ คอมพิวเตอร์ พื้นฐาน
Anny Choosaeng
 
แสตก
แสตกแสตก
แสตก
Nu_waew
 
โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์
waradakhantee
 
อัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหาอัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหา
skiats
 
อัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหาอัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหา
supatra178
 

Viewers also liked (10)

การวิเคราะห์อัลกอริทึม
การวิเคราะห์อัลกอริทึมการวิเคราะห์อัลกอริทึม
การวิเคราะห์อัลกอริทึม
 
โครงสร้างข้อมูลแบบสแต็ก
โครงสร้างข้อมูลแบบสแต็กโครงสร้างข้อมูลแบบสแต็ก
โครงสร้างข้อมูลแบบสแต็ก
 
การวิเคราะห์อัลกอริทึม(algorithm analysis)
การวิเคราะห์อัลกอริทึม(algorithm analysis)การวิเคราะห์อัลกอริทึม(algorithm analysis)
การวิเคราะห์อัลกอริทึม(algorithm analysis)
 
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึมความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
 
ความรู้ คอมพิวเตอร์ พื้นฐาน
ความรู้ คอมพิวเตอร์ พื้นฐานความรู้ คอมพิวเตอร์ พื้นฐาน
ความรู้ คอมพิวเตอร์ พื้นฐาน
 
แสตก
แสตกแสตก
แสตก
 
โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์โครงสร้างแบบอาร์เรย์
โครงสร้างแบบอาร์เรย์
 
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (linklist)
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (linklist)โครงสร้างข้อมูลแบบลิงค์ลิสต์ (linklist)
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (linklist)
 
อัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหาอัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหา
 
อัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหาอัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหา
 

Similar to Data struct is_chapter1

การจัดเก็บข้อมูล
การจัดเก็บข้อมูลการจัดเก็บข้อมูล
การจัดเก็บข้อมูล
sa
 
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
Nuanlaor Nuan
 
ฐานข้อมูลนะสอน
ฐานข้อมูลนะสอนฐานข้อมูลนะสอน
ฐานข้อมูลนะสอน
sariya25
 
งานคอมนางสาว มลทิรา เอกกุล เรื่อง เทคโนโลยีการสื่อสาร
งานคอมนางสาว มลทิรา  เอกกุล เรื่อง เทคโนโลยีการสื่อสารงานคอมนางสาว มลทิรา  เอกกุล เรื่อง เทคโนโลยีการสื่อสาร
งานคอมนางสาว มลทิรา เอกกุล เรื่อง เทคโนโลยีการสื่อสาร
miwmilk
 
Data processing
Data processingData processing
Data processing
chukiat008
 
นางสาว มลทิรา เอกกุล ม.5
นางสาว มลทิรา   เอกกุล ม.5นางสาว มลทิรา   เอกกุล ม.5
นางสาว มลทิรา เอกกุล ม.5
miwmilk
 
นางสาวมลทิรา เอกกุล ม.5
นางสาวมลทิรา   เอกกุล ม.5นางสาวมลทิรา   เอกกุล ม.5
นางสาวมลทิรา เอกกุล ม.5
miwmilk
 
นางสาวมลทิรา เอกกุล
นางสาวมลทิรา  เอกกุลนางสาวมลทิรา  เอกกุล
นางสาวมลทิรา เอกกุล
miwmilk
 
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูลความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
พัน พัน
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
kruthanyaporn
 

Similar to Data struct is_chapter1 (20)

Database
DatabaseDatabase
Database
 
Db1
Db1Db1
Db1
 
การจัดเก็บข้อมูล
การจัดเก็บข้อมูลการจัดเก็บข้อมูล
การจัดเก็บข้อมูล
 
บทที่ 3
บทที่ 3บทที่ 3
บทที่ 3
 
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
นวลลออ ถาวรโรจน์เสถียร เลขที่20 ม.5
 
ฐานข้อมูลนะสอน
ฐานข้อมูลนะสอนฐานข้อมูลนะสอน
ฐานข้อมูลนะสอน
 
งานคอมนางสาว มลทิรา เอกกุล เรื่อง เทคโนโลยีการสื่อสาร
งานคอมนางสาว มลทิรา  เอกกุล เรื่อง เทคโนโลยีการสื่อสารงานคอมนางสาว มลทิรา  เอกกุล เรื่อง เทคโนโลยีการสื่อสาร
งานคอมนางสาว มลทิรา เอกกุล เรื่อง เทคโนโลยีการสื่อสาร
 
Lesson 1
Lesson 1Lesson 1
Lesson 1
 
Data processing
Data processingData processing
Data processing
 
Week 1
Week 1Week 1
Week 1
 
การจัดการฐานข้อมูล
การจัดการฐานข้อมูลการจัดการฐานข้อมูล
การจัดการฐานข้อมูล
 
นางสาว มลทิรา เอกกุล ม.5
นางสาว มลทิรา   เอกกุล ม.5นางสาว มลทิรา   เอกกุล ม.5
นางสาว มลทิรา เอกกุล ม.5
 
นางสาวมลทิรา เอกกุล ม.5
นางสาวมลทิรา   เอกกุล ม.5นางสาวมลทิรา   เอกกุล ม.5
นางสาวมลทิรา เอกกุล ม.5
 
นางสาวมลทิรา เอกกุล
นางสาวมลทิรา  เอกกุลนางสาวมลทิรา  เอกกุล
นางสาวมลทิรา เอกกุล
 
ระบบสารสนเทศ
ระบบสารสนเทศระบบสารสนเทศ
ระบบสารสนเทศ
 
ใบความรู้ที่1
ใบความรู้ที่1ใบความรู้ที่1
ใบความรู้ที่1
 
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูลความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล
 
สารสนเทศเพื่อการบริหารทางการศึกษา04
สารสนเทศเพื่อการบริหารทางการศึกษา04สารสนเทศเพื่อการบริหารทางการศึกษา04
สารสนเทศเพื่อการบริหารทางการศึกษา04
 
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูลความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
ความรู้พื้นฐานเกี่ยวกับฐานข้อมูล
 
แนวการสอบ ม.4
แนวการสอบ ม.4แนวการสอบ ม.4
แนวการสอบ ม.4
 

Data struct is_chapter1