Data struct is_chapter1
-
Upload
supreeya-charoentham -
Category
Documents
-
view
1.193 -
download
0
Transcript of Data struct is_chapter1
291101โครงสร�างข้�อมู�ลและข้��นตอน
วิ�ธี� Data Structures and
Algorithms
อ.ธาราร�ตน์� พวงสุ�วรรณคณะว�ทยาศาสุตร�และศ�ลปศาสุตร�
มหาว�ทยาล�ยบู�รพา ว�ทยาเขตสุารสุน์เทศจั�น์ทบู�ร
ดาวน์�โหลดเอกสุารการเร ยน์ได%ท &
http://www.chanthaburi.buu.ac.th/~thararat
E-mail : [email protected]
ค�าอธี�บายรายวิ�ชา โครงสุร%างข%อม�ลแบูบูต'างๆ ล�สุต� สุแตก แถวคอย ต%น์ไม% กราฟ เซ็,ต
และ ฮี ฟ การเร ยงล.าด�บูข%อม�ลด%วยอ�ลกอร�ท/มแบูบู บู�บูเบู�ล การแทรก เชลล�
ฮี พ คว�ก การค%น์หาด%วยอ�ลกอร�ท/มแบูบูตามล.าด�บู แบูบูไบูน์าร ใช%ตารางแฮีช โครงสุร%างต%น์ไม%และการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างต%น์ไม% โครงสุร%างกราฟและการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างกราฟ การประย�กต�ใช%โครงสุร%างข%อม�ลเพ2&อแก%ป3ญหาใน์ธ�รก�จั ภาคปฏิ�บู�ต�ใช%โปรแกรมภาษาท &ก.าหน์ดเข ยน์โปรแกรมประย�กต�
โครงสุร%างข%อม�ลและข�8น์ตอน์ว�ธ เพ2&อแก%ป3ญหาใน์งาน์ธ�รก�จั
วิ�ตถุ�ประสงค�รายวิ�ชา เพ2&อให%ผู้�%เร ยน์เข%าใจัโครงสุร%างข%อม�ลร�ปแบูบู
ต'าง ๆ และน์.าไปใช%ได%อย'างเหมาะสุม เพ2&อให%ผู้�%เร ยน์เข%าใจัว�ธ การประมวลผู้ล
โครงสุร%างข%อม�ลร�ปแบูบูต'าง ๆ เพ2&อให%ผู้�%เร ยน์สุามารถว�เคราะห�และออกแบูบูอ�ล
กอร�ท/มโดยใช%โครงสุร%างข%อม�ลชน์�ดต'าง ๆ ได% เพ2&อให%ผู้�%เร ยน์สุามารถใช%โปรแกรมภาษาใน์การ
เข ยน์โปรแกรมประย�กต�โครงสุร%างข%อม�ลได%
สถุานภาพรายวิ�ชาและเง"#อนไข้รายวิ�ชา
ว�ชาเอกบู�งค�บู บู�รพว�ชา ว�ชา 291100 การ
เข ยน์โปรแกรมเบู28องต%น์
เน"�อหาวิ�ชา ความร� %เบู28องต%น์เก &ยวก�บูโครงสุร%างข%อม�ลและอ�ลกอร�ท/ม โครงสุร%างข%อม�ลแบูบูต'างๆ ได%แก' ล�สุต� สุแตก แถวคอย ต%น์ไม%
กราฟ เซ็,ต และ ฮี ฟ การเร ยงล.าด�บูข%อม�ลด%วยอ�ลกอร�ท/มแบูบูต'าง ๆ ได%แก' บู�บูเบู�ล
การแทรก เชลล� ฮี พ คว�ก การค%น์หาข%อม�ลด%วยอ�ลกอร�ท/มแบูบูต'าง ๆ ได%แก' แบูบูตาม
ล.าด�บู แบูบูไบูน์าร ใช%ตารางแฮีช โครงสุร%างต%น์ไม%และการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างต%น์ไม% โครงสุร%างกราฟและการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างกราฟ การประย�กต�ใช%โครงสุร%างข%อม�ลเพ2&อแก%ป3ญหาใน์ธ�รก�จั ใช%โปรแกรมภาษาใน์การเข ยน์โปรแกรมจัากอ�ลกอร�ท/มท &ได%
ออกแบูบูหร2อประย�กต�โครงสุร%างข%อม�ล
กิ�จกิรรมูกิารเร�ยนกิารสอน บูรรยายเน์28อหาบูทเร ยน์ใน์ช�8น์เร ยน์ อภ�ปรายและถามตอบูใน์ช�8น์เร ยน์ ฝึ;กเข ยน์อ�ลกอร�ท/มและเข ยน์โปรแกรมเพ2&อ
ทดสุอบูอ�ลกอร�ท/ม ท.าแบูบูฝึ;กห�ด การทดสุอบูย'อยระหว'างเร ยน์
กิารวิ�ดผลและประเมู�นผล สุอบูกลางภาค 35%
สุอบูปลายภาค 30%
ทดสุอบูย'อย 15% แบูบูฝึ;กห�ดและการเข%าช�8น์เร ยน์
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.
ควิามูร��เบ"�องต�นเกิ�#ยวิกิ�บโครงสร�างข้�อมู�ลและอ�ลกิอร�ทึ-มู
เน"�อหา ความหมายของโครงสุร%างข%อม�ล ประเภทของโครงสุร%างข%อม�ล พ28น์ฐาน์การเข ยน์อ�ลกอร�ท/มด%วย
Pseudocode ต�วอย'างการเข ยน์อ�ลกอร�ท/มด%วย
Pseudocode การประเม�น์ประสุ�ทธ�ภาพของอ�ลกอร�ท/ม
ควิามูหมูายข้องข้�อมู�ล ข%อม�ล (Data)
ข%อเท,จัจัร�งท &เก &ยวข%องก�บูบู�คคล สุถาน์ท & สุ�&งของ หร2อเหต�การณ� ท &สุน์ใจั
ประเภทของข%อม�ล แบู'งตามล�กษณะของข%อม�ล แบู'งตามล�กษณะการใช%งาน์
ประเภทึข้องข้�อมู�ล แบู'งตามล�กษณะของข%อม�ล
Numeric Alphabetic Alphanumeric
ประเภทึข้องข้�อมู�ล แบู'งตามล�กษณะการใช%งาน์
ข้�อมู�ลทึ�#ใช�ในกิารค�านวิณ Numeric หร"อข้�อมู�ลทึ�#เป0นต�วิเลข้ล�วิน ๆ
ข้�อมู�ลทึ�#ไมู+น�าไปใช�ในกิารค�านวิณ Character หร"อ String เช+น อ�นด�บทึ�#
เลข้ประจ�าต�วิ บ�านเลข้ทึ�# หมูายเลข้โทึรศั�พทึ� รห�สไปรษณ�ย� เป0นต�น
ส+วินประกิอบข้องประเภทึข้�อมู�ล A set of values A set of
operations on valuesType Values Operation
sInteger -∞,...,-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 เข%าด%วย
ก�น์ ท.าให%เก�ดเป=น์ร�ปร'างของโครงสุร%าง โดยต�8งอย�'บูน์พ28น์ฐาน์การซ็'อน์รายละเอ ยดและข%อม�ล
Abstract data type (ADT)
ล�กษณะของ ADT แบู'งตามความสุ�มพ�น์ธ�ใน์ข%อม�ล ข%อม�ลเช�งเด &ยว (Atomic data) ข%อม�ลประกอบู (Composite data)
Atomic data
ค2อข%อม�ลท &ประกอบูด%วยค'าเด ยวท &ไม'สุามารถแบู'งสุ'วน์ข%อม�ลน์ 8ออกไปเพ2&อสุ2&อความหมายได%อ ก เช'น์ เลข จั.าน์วน์เต,ม อาย� เพศ เป=น์ต%น์
Composite data
ค2อข%อม�ลท &สุามารถแตกออกเป=น์ฟ>ลด�ย'อยๆได% และสุ�&งท &แตกออกไปสุามารถสุ2&อความหมายได% เช'น์ เบูอร�โทรศ�พท� หมายเลขคร�ภ�ณฑ์� รห�สุน์�กศ/กษา เป=น์ต%น์
ประเภทึข้อง ADT
แบู'งตามร�ปแบูบูโครงสุร%าง ประเภทข%อม�ลน์ามธรรมท &ไม'ม ล.าด�บูของข%อม�ลซ็%าย
ขวา เช'น์ เซ็,ต ประเภทข%อม�ลน์ามธรรมเช�งเสุ%น์ (linear ADT,
linear data structure) หมายถ/ง ประเภทข%อม�ลอย'างย'อท &ม ล.าด�บูหน์/&งอ�น์ เช'น์ ก'อน์-หล�ง ซ็%าย-ขวา เช'น์ รายการโยง กองซ็%อน์ ค�ว
ประเภทข%อม�ลอย'างย'อท &ม ล.าด�บูสุองอ�น์ เช'น์ ต%น์ไม% ม ล.าด�บูสุองแบูบูค2อ พ &-น์%อง และ พ'อ-ล�ก
ประเภทึข้อง ADT
แบู'งตามการซ็.8าก�น์และล.าด�บูของข%อม�ล ไม'อน์�ญาตให%ซ็.8าก�น์ได% เร ยกว'า เซ็,ต ได%แก' ตารางแฮีช
ต%น์ไม%บูางชน์�ด ไม'ม ล.าด�บูของข%อม�ล เร ยกว'า Collection ใช%ล.าด�บูตามการเข%าออกข%อม�ล
เข%าก'อน์ออกก'อน์ (First In First Out: FIFO)เร ยกว'า ค�ว หร2อ แถวคอย
เข%าก'อน์ออกท หล�ง (First In Last Out: FILO)เร ยกว'า กองซ็%อน์
ล�กิษณะข้องข้�อมู�ลทึ�#ด�
Accuracy ข%อม�ลต%องม ความถ�กต%อง ซ็/&งเป=น์สุ�&งสุ.าค�ญ
อ�น์ด�บูหน์/&งใน์ขบูวน์การประมวลผู้ลข%อม�ล Completeness
ข%อม�ลท &ถ�กต%องเพ ยงอย'างเด ยวไม'อาจั เพ ยงพอสุ.าหร�บูการประมวล จัะต%องสุมบู�รณ�ท�8ง
รายการและจั.าน์วน์ รวมท�8งต%องครอบูคล�มประชากรหร2อต�วแปรใน์กล�'มท &เก &ยวข%องด%วย
ล�กิษณะข้องข้�อมู�ลทึ�#ด� (ต+อ)
Timeliness ใช%เวลาใน์การประมวลผู้ลน์%อย ความเร,วเป=น์
ต�วช 8ความท�น์สุม�ยต'อเหต�การณ� และความเป=น์ป3จัจั�บู�น์ของข%อม�ล
Compatibles ความเข%าก�น์ได%ก�บูเคร2&องม2อประมวลผู้ล ข%อม�ล
ด�บูท &จัะน์.าเข%าสุ�'ขบูวน์การประมวลผู้ล จั.าเป=น์ต%องเข%า ก�น์ได%ก�บูเคร2&องม2อท &ใช%ใน์การประมวลผู้ลน์�8น์ ๆ
ควิามูหมูายข้องโครงสร�างข้�อมู�ล
เป=น์การจั�ดระบูบูความสุ�มพ�น์ธ�ระหว'างข%อม�ลใน์แบูบูต'าง ๆ ก�น์ เพ2&อให%เหมาะสุมก�บูการด.าเน์�น์การก�บูข%อม�ลใน์
ระบูบูงาน์น์�8น์ ๆ และเพ2&อให%การใช%เน์28อท &ใน์หน์'วยความจั.าหล�กเก�ดประโยชน์�สุ�งสุ�ด
การรวมก�น์ของข%อม�ลเช�งเด &ยวและข%อม�ลเช�งประกอบูเข%าด%วยก�น์
เป=น์กล�'มพร%อมก�บูการก.าหน์ดความสุ�มพ�น์ธ� ต�วอย'างโครงสุร%างข%อม�ล
Array, String, List, Stack, Queue, Tree, Graph etc.
ต�วิอย+างกิารกิ�าหนดโครงสร�างข้�อมู�ลโครงสร�างข้�อมู�ลแบบอาร�เรย� ช�ดข%อม�ลต%องม ค'าชน์�ดใดชน์�ดหน์/&ง ชน์�ดของข%อม�ลจัะต%องอธ�บูายล�กษณะข%อม�ลได%
โดยตรง และล.าด�บูข%อม�ลต%องม ความสุ�มพ�น์ธ�ก�บูข%อม�ลท &เก,บู
เช'น์ อาร�เรย�ท &ใช%เก,บูข%อม�ลของเด2อน์ โดยล.าด�บูท & 0 เก,บู มกราคม , ล.าด�บูท & 1 เก,บู ก�มภาพ�น์ธ�
เป=น์ต%น์
ควิามูส�าค�ญข้องโครงสร�างข้�อมู�ล
• ม ความสุ.าค�ญต'อการประมวลผู้ลด%วยคอมพ�วเตอร� เพราะข%อม�ลท &ถ�กจั�ดเก,บูอย'างเป=น์ระเบู ยบูและข�8น์ตอน์การเข%าถ/งอย'างม ระบูบูจัะท.าให%สุะดวกใน์การจั�ดการก�บูข%อม�ลตามท &ต%องการ
กิารเล"อกิใช�โครงสร�างข้�อมู�ล
• การพ�ฒน์าโปรแกรมเพ2&อให%ได%โปรแกรมท &ม ประสุ�ทธ�ภาพใน์การท.างาน์สุ�งสุ�ด ต%องค.าน์/งถ/ง
โครงสุร%างข%อม�ลท &ใช%• กรณ ท &โปรแกรมไม'ย�'งยากซ็�บูซ็%อน์มาก ผู้�%เข ยน์โปรแกรมไม'จั.าเป=น์ต%องค.าน์/งถ/งโครงสุร%างข%อม�ลมากน์�ก เพราะโครงสุร%างข%อม�ลอาจัจัะไม'ม ผู้ลก�บู
ประสุ�ทธ�ภาพใน์การท.างาน์ของโปรแกรม • ใน์ระบูบูงาน์ใหญ'ท &ม ความสุล�บูซ็�บูซ็%อน์มาก ๆ ต%อง
ค.าน์/งถ/งโครงสุร%างข%อม�ลท &เล2อกใช%ด%วย
กิารด�าเน�นกิารกิ�บข้�อมู�ลในโครงสร�างข้�อมู�ล
การเพ�&มข%อม�ล การลบูข%อม�ล การเปล &ยน์แปลงแก%ไขข%อม�ล การค%น์หาข%อม�ล การแสุดงข%อม�ล การเร ยงล.าด�บูข%อม�ล
ประเภทึข้องโครงสร�างข้�อมู�ล Primitive data structure
เป=น์ข%อม�ลท &ม ค'าเฉพาะประเภทใดประเภทหน์/&ง เช'น์ แบูบูเลขจั.าน์วน์เต,ม (integer) แบูบูตรรกะ
(boolean) แบูบูต�วอ�กษร(character) เป=น์ต%น์
Simple data structureเก�ดจัากการน์.าเอาข%อม�ลโครงสุร%างพ28น์ฐาน์ประกอบูข/8น์มาเป=น์ช�ดของข%อม�ลท &ม ความสุ�มพ�น์ธ�ก�น์ใน์ล�กษะ
ใดล�กษณะหน์/&ง เช'น์ ข%อม�ลแบูบูอาร�เรย�
ประเภทึข้องโครงสร�างข้�อมู�ล Compound data structure
เก�ดจัากการน์.าเอาข%อม�ลองค�ประกอบูอย'างง'าย ประกอบูข/8น์เป=น์ข%อม�ลท &ม โครงสุร%างซ็�บูซ็%อน์ข/8น์
แบู'งเป=น์แบูบู linear structure และnonlinear structure
ประเภทึข้องโครงสร�างข้�อมู�ล
Primitive
data structur
e
Simpledata
structure
Compounddata structurelinear nonlin
ear
IntegerBooleanCharacter
ArrayStringRecord
StackQueueLinked-List
GraphGeneral TreeBinary Tree
อ�ลกิอร�ธี-มู (Algorithm)
ล.าด�บูข�8น์ตอน์ว�ธ ใน์การท.างาน์ของโปรแกรม เพ2&อแก%ป3ญหาใดป3ญหาหน์/&ง ซ็/&งถ%าปฏิ�บู�ต�ตาม
ข�8น์ตอน์อย'างถ�กต%องแล%ว จัะสุามารถช'วยแก% ป3ญหา หร2อประมวลผู้ลตามต%องการได%สุ.าเร,จั
ต�วอย'างเคร2&องม2อท &ใช%ใน์การแสุดงอ�ลกอร�ธ/ม การเข ยน์ซ็�โดโค%ด (Pseudo Code)
การเข ยน์ผู้�งงาน์ (Flowchart)
กิารเข้�ยน Pseudocode
ซึ่�โดโคด (PseudoCode)การน์.าค.าใน์ภาษาอ�งกฤษมาแสุดงอ�ลกอร�ท/ม หร2อ
ล.าด�บูข�8น์ตอน์การท.างาน์ของโปรแกรมเพ2&อแก%ป3ญหาใดป3ญหาหน์/&ง โดยเร ยบูเร ยงให%สุามารถสุ2&อความหมายให%เข%าใจั
ได%ว'าแต'ละข�8น์ตอน์การแก%ป3ญหาน์�8น์ท.าได%อย'างไร ร�ปแบบกิารเข้�ยนซึ่�โดโคด
การร�บูข%อม�ล และการแสุดงข%อม�ล การค.าน์วณ การเปร ยบูเท ยบู การท.างาน์แบูบูวน์ซ็.8า การข%ามไปท.าค.าสุ�&งอ2&น์
ล�กิษณะข้อง Pseudocode เป=น์เคร2&องม2อท &น์�ยมใช%ใน์การสุร%างอ�ลกอร�ท/ม ม ร�ปแบูบูคล%ายประโยคภาษาอ�งกฤษ ไม'สุามารถร�น์เป=น์โปรแกรมได%โดยตรง ไม'ข/8น์อย�'ก�บูภาษาคอมพ�วเตอร� ภาษาใดภาษาหน์/&ง ม ร�ปแบูบูประโยคท &เป=น์โครงสุร%าง เพ2&อใช%อธ�บูายราย
ละเอ ยดการพ�ฒน์า อ�ลกอร�ท/มเน์%น์ท &ประโยคก�จักรรม เพ2&อใช%ใน์การท.างาน์ของ
โปรแกรมเป=น์สุ.าค�ญ สุามารถสุร%างประโยคแบูบูเร ยงค.าสุ�&ง (Sequence)
ก.าหน์ดทางเล2อก (Selection) และการท.างาน์เป=น์รอบู(Iteration)
Pseudocode Algorithm header
Purpose Condition Return
Keywords : Pre : ความต%องการของพาราม�เตอร�ท &จัะร�บูเข%ามา
ท.างาน์ Post : ก�จักรรมท &เก�ดข/8น์และสุถาน์ะของ output
parameters Return : ค2อเง2&อน์ไขท &ม การสุ'งกล�บูไปหล�งจัากท.างาน์
ต�วิอย+าง Algorithm Heading
Algorithm deviation This algorithm print deviation from mean for series
pre nothingpost average and number with their deviation printedreturn nothing
* จัากต�วอย'าง แสุดงว'า อ�ลกอร�ท/มน์ 8ไม'ม การร�บูค'าพาราม�เตอร�ใด ๆ เข%ามาท.างาน์ใน์อ�ลกอร�ท/ม
* การท.างาน์ของอ�ลกอร�ท/มน์ 8 จัะม การพ�มพ�ค'า average และ deviation
* หล�งจัากอ�ลกอร�ท/มน์ 8ท.างาน์เสุร,จั ไม'ม การสุ'งค'าใด ๆ กล�บูไป
ต�วิอย+างกิารเข้�ยนอ�ลกิอร�ทึ-มูด�วิย Pseudocode
Algorithm addNumber(number1,number2)
This algorithm print sum of two numberspre number1 and number2 are numbers to calculate sum of thempost two number and sum of two numbers printedreturn nothing
* จัากต�วอย'าง แสุดงว'า อ�ลกอร�ท/มน์ 8ม การร�บูค'าพาราม� เตอร�เข%ามาท.างาน์ 2 ต�วค2อ number 1 และ number2
* การท.างาน์ของอ�ลกอร�ท/มน์ 8 จัะม การพ�มพ�ค'าผู้ลบูวกของต�วเลขออกมา
* หล�งจัากอ�ลกอร�ท/มน์ 8ท.างาน์เสุร,จั ไม'ม การสุ'งค'าใด ๆ กล�บูไป
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารร�บข้�อมู�ล
ร�ปแบูบู read var1, var2, var3, … ต�วอย'าง read id
กิารแสดงข้�อมู�ลร�ปแบูบู print var1, var2, var3,
… ต�วอย'าง print ‘Name’,name
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารกิ�าหนดค+าร�ปแบูบู set variable to
expression/constantเช'น์
set count to 0set average to total/2
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารค�านวิณ
ร�ปแบูบูcompute variable =
expression / constant หร2อcompute add variable to
expression/constantต�วอย'าง
compute total = num1 + num2
กิารเข้�ยน 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 xelse
compute sum = x + y
endif
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารเปร�ยบเทึ�ยบ
กิรณ�ทึ�# 2 เปร ยบูเท ยบูทางเล2อกหลายทางร�ปแบูบู case variable of
a : a-statement(s)b : b-statement(s)c : c-statement(s)
endcase
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารเปร�ยบเทึ�ยบ
กิรณ�ทึ�# 2 เปร ยบูเท ยบูทางเล2อกหลายทางต�วอย'าง case grade of
4 : print ‘A’3 : print ‘B’2 : print ‘C’
endcase
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า
ร�ปแบูบู loop (เง2&อน์ไข) action end loop
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า
Do- while loop : เปร ยบูเท ยบูเง2&อน์ไขก'อน์ท.าค.าสุ�&งภายใน์
ร�ปแบูบู do while (condition)
statement(s)enddo
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า
Do- while loop : เปร ยบูเท ยบูเง2&อน์ไขก'อน์ท.าค.าสุ�&งภายใน์
ต�วอย'าง read datado while (data <> 0)
read dataenddo
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า
Until loop : ท.าค.าสุ�&งภายใน์ก'อน์ท &จัะม การเปร ยบูเท ยบูเง2&อน์ไข
ร�ปแบูบู repeatstatement(s)
until (condition)
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า
Until loop : ท.าค.าสุ�&งภายใน์ก'อน์ท &จัะม การเปร ยบูเท ยบูเง2&อน์ไข
ต�วอย'าง n = 0repeat
read id,nameprint id,namecompute n = n + 1
until (n=5)
กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารข้�ามูไปทึ�าค�าส�#งอ"#น
ร�ปแบูบู label :statement(s)goto label
ต�วอย'าง L :read xif(x < 0) then goto L
ต�วิอย+าง กิารเข้�ยน Algorithm ด�วิย Pseudocode
กิารประเมู�นผลข้องโปรแกิรมู
กิารใช�เน"�อทึ�#ในหน+วิยควิามูจ�า ข/8น์อย�'ก�บูการเล2อกโครงสุร%างข%อม�ล และ
การแทน์ข%อม�ล ระยะเวิลาทึ�#ใช�ในกิารทึ�างาน
ข/8น์อย�'ก�บูอ�ลกอร�ธ/มท &เล2อกใช%
โปรแกิรมูทึ�#ด�ใช�เวิลา
ในกิารทึ�างานน�อย
ใช�เน"�อทึ�#ในหน+วิยควิามู
จ�าน�อย
กิารประเมู�นประส�ทึธี�ภาพข้องอ�ลกิอร�ธี-มู Performance Analysis
การว�เคราะห�ประสุ�ทธ�ภาพของอ�ลกอร�ธ/มจัะใช%ว�ธ การว�เคราะห�ว�ธ การท.างาน์ของอ�ลกอร�ธ/ม
Performance Measurement การว�ดประสุ�ทธ�ภาพของอ�ลกอร�ธ/ม จัะ
เป=น์การว�ดผู้ลจัากการทดลองจัร�ง
วิ�เคราะห�ประส�ทึธี�ภาพข้องอ�ลกิอร�ธี-มู ว�เคราะห�หน์'วยความจั.าท &ต%องใช%ใน์การประมวล
ผู้ล หร2อเร ยกว'าว�เคราะห� Space Complexity
ว�เคราะห�เวลาท &จัะต%องใช%ใน์การประมวลผู้ล หร2อ เร ยกว'า Time Complexity
การว�เคราะห�ประสุ�ทธ�ภาพของอ�ลกอร�ธ/ม
Space/Memory : ใช%เน์28อท &ความจั.ามากน์%อยแค'ไหน์
Timeเวลาท &ใช%ใน์การประมวลผู้ล
กิารวิ�เคราะห� SPACE COMPLEXITY
การว�เคราะห�ว'าจัะต%องใช%หน์'วยความจั.าท�8งหมดเท'าไรใน์การประมวลผู้ลอ�ลกอร�ธ/มน์�8น์ •รองร�บจ�านวินข้�อมู�ลทึ�#ส+งเข้�ามูาประมูวิลผล (Input Data)ได�มูากิทึ�#ส�ดเทึ+าใด เพ"#อให�อ�ลกิอร�ธี-มูน��นสามูารถุประมูวิลผลได�อย�+
•ทึราบข้นาดข้องหน+วิยควิามูจ�าทึ�#จะต�องใช�ในกิารประมูวิลผลอ�ลกิอร�ธี-มู เพ"#อไมู+ให�กิระทึบกิ�บกิารทึ�างานข้องคนอ"#น
•เพ"#อเล"อกิค�ณล�กิษณะข้องคอมูพ�วิเตอร�ทึ�#จะใช�ต�ดต��งโปรแกิรมูทึ�#พ�ฒนาข้-�นได�อย+างเหมูาะสมู
องค�ประกิอบข้อง SPACE COMPLEXITY
Instruction Space จั.าน์วน์ของหน์'วยความจั.าท &คอมไพเลอร�จั.าเป=น์ต%องใช%
ขณะท.าการคอมไพล�โปรแกรม Data Space
จั.าน์วน์หน์'วยความจั.าท &ต%องใช%สุ.าหร�บูเก,บูค'าคงท & และต�วแปรท�8งหมดท &ต%องใช%ใน์การประมวลผู้ลโปรแกรม
Environment Stack Space จั.าน์วน์หน์'วยความจั.าท &ต%องใช%ใน์การเก,บูผู้ลล�พธ�ของ
ข%อม�ลเอาไว% เพ2&อรอเวลาท &จัะน์.าผู้ลล�พธ�น์�8น์กล�บูไปประมวลผู้ลอ กคร�8ง (พบูใน์ recursive function)
DATA SPACE Static memory allocationStatic memory allocation
จ�านวินข้องหน+วิยควิามูจ�าทึ�#ต�องใช�อย+างแน+นอน ไมู+มู�กิารเปล�#ยนแปลง ประกิอบด�วิยหน+วิยควิามูจ�าทึ�#ใช�เกิ9บค+าคงทึ�#และต�วิแปรประเภทึ array เช'น์ การประกาศต�วแปร int a, b; char s[10], c;
Dynamic memory allocationDynamic memory allocationจ�านวินข้องหน+วิยควิามูจ�าทึ�#ใช�ในกิารประมูวิลผลสามูารถุเปล�#ยนแปลงได� และจะทึราบจ�านวินหน+วิยควิามูจ�าทึ�#จะใช�กิ9ต+อเมู"#อโปรแกิรมูกิ�าล�งทึ�างานอย�+ เช'น์ การใช% pointer และม การจัองเน์28อท &ใน์หน์'วยความจั.าด%วยค.าสุ� &ง
malloc(); int *p; p = malloc(sizeof(int)*2);
ประส�ทึธี�ภาพข้องอ�ลกิอร�ทึ-มู (Algorithm Efficiency)
ม�กถ�กก.าหน์ดมาใน์ร�ปแบูบูของฟ3งก�ช�น์ ด%วยการพ�จัารณาจัากจั.าน์วน์ของ
element ท &ถ�กโปรเซ็สุ และชน์�ดของล�ปท &ใช%งาน์ แทน์ด%วยฟ3งก�ช�น์ด�งน์ 8 f(n) = efficiency ประสุ�ทธ�ภาพของ Linear Loop ค2อ f(n) = n ประสุ�ทธ�ภาพของ Logarithm Loop ค2อ f(n) = logn ประสุ�ทธ�ภาพของ Linear Logarithm Loop ค2อ f(n) = n(logn) ประสุ�ทธ�ภาพของ Quadratic Loop ค2อ f(n) = n2
ประสุ�ทธ�ภาพของ Dependent Quadratic Loop ค2อ f(n) = n(n+1)/2
ประส�ทึธี�ภาพข้อง Linear Loops
Linear Loop ค2อ loop ท &ม การเพ�&มหร2อลดค'าให%ก�บูต�วแปรท &ควบูค�ม loop
ต�วอย'าง for (i=0; i<1000; i++) application code
ประสุ�ทธ�ภาพค2อจั.าน์วน์รอบูของการวน์ loop แต'บูางกรณ อาจัจัะไม'ได%เป=น์แบูบูน์�8น์เช'น์ for (i=0; i<1000; i+=2)
application codeประสุ�ทธ�ภาพ f(n) = n/2
Loop facter ย�&งสุ�ง จั.าน์วน์รอบูของการวน์ loop ก,จัะสุ�งด%วย
ประส�ทึธี�ภาพข้อง Logarithmic Loops
Logarithmic loops ค2อ loop ท &ม การค�ณหร2อหารต�วควบูค�ม loop
ประสุ�ทธ�ภาพของ Logarithm Loop ค2อ f(n ) = logn ต�วอย'าง
Multiply Loopsfor ( i = 1; i < 1000; i *=2)application code
Divide Loopsfor ( i = 1000; i >= 1; i /=2)application code
ประส�ทึธี�ภาพข้อง Nested Loops
ประสุ�ทธ�ภาพหร2อจั.าน์วน์รอบูของ 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 ค2อ loop ท &ม การซ็%อน์ loop
Nested Loops แบู'งได%เป=น์ 3 แบูบูย'อย ค2อ 1. ประสุ�ทธ�ภาพของ Linear Logarithm Loop
ค2อ f(n) = n(logn)ต�วอย'าง
for ( i = 0; i < 10; i++) for ( j = 1; j <= 10; j*=2)
application code
ประส�ทึธี�ภาพข้อง Nested Loops
2. ประสุ�ทธ�ภาพของ Quadratic Loop ค2อ f(n) = n2
ต�วอย'าง for ( i = 0; i < 10; i++)
for ( j = 0; j < 10; j++) application code
ประส�ทึธี�ภาพข้อง Nested Loops
3. ประสุ�ทธ�ภาพของ Dependent Quadratic Loop ค2อ f(n) = n(n+1)/2ต�วอย'าง
for ( i = 0; i < 10; i++) for ( j = 0; j < i; j++)
application code
BIG-O NOTATION
การว�เคราะห�อ�ลกอร�ธ/ม จัะใช%ว�ธ หาจั.าน์วน์คร�8งของการท.างาน์ของโปรแกรม โดยม�กจัะสุน์ใจัค'าโดยประมาณเท'าน์�8น์ ซ็/&งจัะใช%สุ�ญล�กษณ�ว'า O เร ยกว'า บู�Dกโอ (big O) ซ็/&งเป=น์สุ�ญล�กษณ�ทางคณ�ตศาสุตร�ท &มาจัากค.าว'า Order of Magnitude
ส�ญล�กิษณ�บ�:กิโอ (Big-O Notation) 7 มาตรฐาน์เพ2&อการว�ดผู้ลประสุ�ทธ�ภาพของอ�ลกอร�
ท/มประกอบูด%วย • O(logn) • O(n) • O(n(logn)) • O(n2) • O(nk ) • O(cn ) • O(n!)
BIG-O NOTATION แน์วความค�ดของบู�Dกโอ จัะด�จัากค'าท &ม ผู้ลกระทบูมากท &สุ�ดเพ ยง
ค'าเด ยว ค'าอ2&น์ๆท &เก &ยวข%องจัะม ผู้ลต'อฟ3งก�ช�น์น์%อยกว'า จั/งไม'สุน์ใจั และไม'
สุน์ใจัค'าคงท &ด%วย
ต�วอย'าง หาค'าบู�Dกโอของ N4 + 10N – 5ถ%า f(N) = N4 + 10N – 5
O(f(N)) = O(N4)
BIG-O NOTATION
ต�วอย'าง หาค'าบู�Dกโอของ 100N +1ถ%า f(N) = 100N +1
O(f(N)) = O(N)
BIG-O NOTATION
ต�วอย'าง หาค'าบู�Dกโอของ N3 + 2N3 + 10ถ%า f(N) = N3 + 2N3 + 10
O(f(N)) = O(N3)
ต�วอย'าง หาค'าบู�Dกโอของ 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 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
เร9วิ ช�า
ต�วิอย+างกิารหา Big-O
O(n)