Data struct is_chapter1

76
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโ Data Structures and Algorithms อ.อออออออออ อออออออออ อออออออออออออออออออออออออออ ออออออออออออออออ ออออออออ ออออออออออออออออ

Transcript of Data struct is_chapter1

Page 1: Data struct is_chapter1

291101โครงสร�างข้�อมู�ลและข้��นตอน

วิ�ธี� Data Structures and

Algorithms

อ.ธาราร�ตน์� พวงสุ�วรรณคณะว�ทยาศาสุตร�และศ�ลปศาสุตร�

มหาว�ทยาล�ยบู�รพา ว�ทยาเขตสุารสุน์เทศจั�น์ทบู�ร

Page 2: Data struct is_chapter1

ดาวน์�โหลดเอกสุารการเร ยน์ได%ท &

http://www.chanthaburi.buu.ac.th/~thararat

E-mail : [email protected]

Page 3: Data struct is_chapter1

ค�าอธี�บายรายวิ�ชา โครงสุร%างข%อม�ลแบูบูต'างๆ ล�สุต� สุแตก แถวคอย ต%น์ไม% กราฟ เซ็,ต

และ ฮี ฟ การเร ยงล.าด�บูข%อม�ลด%วยอ�ลกอร�ท/มแบูบู บู�บูเบู�ล การแทรก เชลล�

ฮี พ คว�ก การค%น์หาด%วยอ�ลกอร�ท/มแบูบูตามล.าด�บู แบูบูไบูน์าร ใช%ตารางแฮีช โครงสุร%างต%น์ไม%และการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างต%น์ไม% โครงสุร%างกราฟและการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างกราฟ การประย�กต�ใช%โครงสุร%างข%อม�ลเพ2&อแก%ป3ญหาใน์ธ�รก�จั ภาคปฏิ�บู�ต�ใช%โปรแกรมภาษาท &ก.าหน์ดเข ยน์โปรแกรมประย�กต�

โครงสุร%างข%อม�ลและข�8น์ตอน์ว�ธ เพ2&อแก%ป3ญหาใน์งาน์ธ�รก�จั

Page 4: Data struct is_chapter1

วิ�ตถุ�ประสงค�รายวิ�ชา เพ2&อให%ผู้�%เร ยน์เข%าใจัโครงสุร%างข%อม�ลร�ปแบูบู

ต'าง ๆ และน์.าไปใช%ได%อย'างเหมาะสุม เพ2&อให%ผู้�%เร ยน์เข%าใจัว�ธ การประมวลผู้ล

โครงสุร%างข%อม�ลร�ปแบูบูต'าง ๆ เพ2&อให%ผู้�%เร ยน์สุามารถว�เคราะห�และออกแบูบูอ�ล

กอร�ท/มโดยใช%โครงสุร%างข%อม�ลชน์�ดต'าง ๆ ได% เพ2&อให%ผู้�%เร ยน์สุามารถใช%โปรแกรมภาษาใน์การ

เข ยน์โปรแกรมประย�กต�โครงสุร%างข%อม�ลได%

Page 5: Data struct is_chapter1

สถุานภาพรายวิ�ชาและเง"#อนไข้รายวิ�ชา

ว�ชาเอกบู�งค�บู บู�รพว�ชา ว�ชา 291100 การ

เข ยน์โปรแกรมเบู28องต%น์

Page 6: Data struct is_chapter1

เน"�อหาวิ�ชา ความร� %เบู28องต%น์เก &ยวก�บูโครงสุร%างข%อม�ลและอ�ลกอร�ท/ม โครงสุร%างข%อม�ลแบูบูต'างๆ ได%แก' ล�สุต� สุแตก แถวคอย ต%น์ไม%

กราฟ เซ็,ต และ ฮี ฟ การเร ยงล.าด�บูข%อม�ลด%วยอ�ลกอร�ท/มแบูบูต'าง ๆ ได%แก' บู�บูเบู�ล

การแทรก เชลล� ฮี พ คว�ก การค%น์หาข%อม�ลด%วยอ�ลกอร�ท/มแบูบูต'าง ๆ ได%แก' แบูบูตาม

ล.าด�บู แบูบูไบูน์าร ใช%ตารางแฮีช โครงสุร%างต%น์ไม%และการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างต%น์ไม% โครงสุร%างกราฟและการด.าเน์�น์การก�บูข%อม�ลใน์โครงสุร%างกราฟ การประย�กต�ใช%โครงสุร%างข%อม�ลเพ2&อแก%ป3ญหาใน์ธ�รก�จั ใช%โปรแกรมภาษาใน์การเข ยน์โปรแกรมจัากอ�ลกอร�ท/มท &ได%

ออกแบูบูหร2อประย�กต�โครงสุร%างข%อม�ล

Page 7: Data struct is_chapter1

กิ�จกิรรมูกิารเร�ยนกิารสอน บูรรยายเน์28อหาบูทเร ยน์ใน์ช�8น์เร ยน์ อภ�ปรายและถามตอบูใน์ช�8น์เร ยน์ ฝึ;กเข ยน์อ�ลกอร�ท/มและเข ยน์โปรแกรมเพ2&อ

ทดสุอบูอ�ลกอร�ท/ม ท.าแบูบูฝึ;กห�ด การทดสุอบูย'อยระหว'างเร ยน์

Page 8: Data struct is_chapter1

กิารวิ�ดผลและประเมู�นผล สุอบูกลางภาค 35%

สุอบูปลายภาค 30%

ทดสุอบูย'อย 15% แบูบูฝึ;กห�ดและการเข%าช�8น์เร ยน์

20%

Page 9: Data struct is_chapter1

ต�าราหล�กิ เอกิสารประกิอบกิารสอน และหน�งส"ออ+านประกิอบ

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.

Page 10: Data struct is_chapter1

ควิามูร��เบ"�องต�นเกิ�#ยวิกิ�บโครงสร�างข้�อมู�ลและอ�ลกิอร�ทึ-มู

Page 11: Data struct is_chapter1

เน"�อหา ความหมายของโครงสุร%างข%อม�ล ประเภทของโครงสุร%างข%อม�ล พ28น์ฐาน์การเข ยน์อ�ลกอร�ท/มด%วย

Pseudocode ต�วอย'างการเข ยน์อ�ลกอร�ท/มด%วย

Pseudocode การประเม�น์ประสุ�ทธ�ภาพของอ�ลกอร�ท/ม

Page 12: Data struct is_chapter1

ควิามูหมูายข้องข้�อมู�ล ข%อม�ล (Data)

ข%อเท,จัจัร�งท &เก &ยวข%องก�บูบู�คคล สุถาน์ท & สุ�&งของ หร2อเหต�การณ� ท &สุน์ใจั

ประเภทของข%อม�ล แบู'งตามล�กษณะของข%อม�ล แบู'งตามล�กษณะการใช%งาน์

Page 13: Data struct is_chapter1

ประเภทึข้องข้�อมู�ล แบู'งตามล�กษณะของข%อม�ล

Numeric Alphabetic Alphanumeric

Page 14: Data struct is_chapter1

ประเภทึข้องข้�อมู�ล แบู'งตามล�กษณะการใช%งาน์

ข้�อมู�ลทึ�#ใช�ในกิารค�านวิณ Numeric หร"อข้�อมู�ลทึ�#เป0นต�วิเลข้ล�วิน ๆ

ข้�อมู�ลทึ�#ไมู+น�าไปใช�ในกิารค�านวิณ Character หร"อ String เช+น อ�นด�บทึ�#

เลข้ประจ�าต�วิ บ�านเลข้ทึ�# หมูายเลข้โทึรศั�พทึ� รห�สไปรษณ�ย� เป0นต�น

Page 15: Data struct is_chapter1

ส+วินประกิอบข้องประเภทึข้�อมู�ล 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’,...

<, >, ...

Page 16: Data struct is_chapter1

Abstract data type (ADT)

หมูายถุ-งประเภทึข้�อมู�ลซึ่-#งแสดงถุ-งระบบกิารจ�ดกิารข้�อมู�ล โดยแสดงถุ-งบร�กิารและกิฎเกิณฑ์�ในกิารจ�ดกิารข้�อมู�ลน��น ๆ แต+ไมู+ได�กิล+าวิถุ-งวิ�ธี�กิารสร�างบร�กิารต+าง ๆ (ค"อกิารน�ามูาใช� ไมู+ใช+กิารศั-กิษาวิ�ธี�สร�าง)

Page 17: Data struct is_chapter1

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น์ฐาน์การซ็'อน์รายละเอ ยดและข%อม�ล

Page 18: Data struct is_chapter1

Abstract data type (ADT)

ล�กษณะของ ADT แบู'งตามความสุ�มพ�น์ธ�ใน์ข%อม�ล ข%อม�ลเช�งเด &ยว (Atomic data) ข%อม�ลประกอบู (Composite data)

Page 19: Data struct is_chapter1

Atomic data

ค2อข%อม�ลท &ประกอบูด%วยค'าเด ยวท &ไม'สุามารถแบู'งสุ'วน์ข%อม�ลน์ 8ออกไปเพ2&อสุ2&อความหมายได%อ ก เช'น์ เลข จั.าน์วน์เต,ม อาย� เพศ เป=น์ต%น์

Page 20: Data struct is_chapter1

Composite data

ค2อข%อม�ลท &สุามารถแตกออกเป=น์ฟ>ลด�ย'อยๆได% และสุ�&งท &แตกออกไปสุามารถสุ2&อความหมายได% เช'น์ เบูอร�โทรศ�พท� หมายเลขคร�ภ�ณฑ์� รห�สุน์�กศ/กษา เป=น์ต%น์

Page 21: Data struct is_chapter1

ประเภทึข้อง ADT

แบู'งตามร�ปแบูบูโครงสุร%าง ประเภทข%อม�ลน์ามธรรมท &ไม'ม ล.าด�บูของข%อม�ลซ็%าย

ขวา เช'น์ เซ็,ต ประเภทข%อม�ลน์ามธรรมเช�งเสุ%น์ (linear ADT,

linear data structure) หมายถ/ง ประเภทข%อม�ลอย'างย'อท &ม ล.าด�บูหน์/&งอ�น์ เช'น์ ก'อน์-หล�ง ซ็%าย-ขวา เช'น์ รายการโยง กองซ็%อน์ ค�ว

ประเภทข%อม�ลอย'างย'อท &ม ล.าด�บูสุองอ�น์ เช'น์ ต%น์ไม% ม ล.าด�บูสุองแบูบูค2อ พ &-น์%อง และ พ'อ-ล�ก

Page 22: Data struct is_chapter1

ประเภทึข้อง ADT

แบู'งตามการซ็.8าก�น์และล.าด�บูของข%อม�ล ไม'อน์�ญาตให%ซ็.8าก�น์ได% เร ยกว'า เซ็,ต ได%แก' ตารางแฮีช

ต%น์ไม%บูางชน์�ด ไม'ม ล.าด�บูของข%อม�ล เร ยกว'า Collection ใช%ล.าด�บูตามการเข%าออกข%อม�ล

เข%าก'อน์ออกก'อน์ (First In First Out: FIFO)เร ยกว'า ค�ว หร2อ แถวคอย

เข%าก'อน์ออกท หล�ง (First In Last Out: FILO)เร ยกว'า กองซ็%อน์

Page 23: Data struct is_chapter1

ล�กิษณะข้องข้�อมู�ลทึ�#ด�

Accuracy ข%อม�ลต%องม ความถ�กต%อง ซ็/&งเป=น์สุ�&งสุ.าค�ญ

อ�น์ด�บูหน์/&งใน์ขบูวน์การประมวลผู้ลข%อม�ล Completeness

ข%อม�ลท &ถ�กต%องเพ ยงอย'างเด ยวไม'อาจั เพ ยงพอสุ.าหร�บูการประมวล จัะต%องสุมบู�รณ�ท�8ง

รายการและจั.าน์วน์ รวมท�8งต%องครอบูคล�มประชากรหร2อต�วแปรใน์กล�'มท &เก &ยวข%องด%วย

Page 24: Data struct is_chapter1

ล�กิษณะข้องข้�อมู�ลทึ�#ด� (ต+อ)

Timeliness ใช%เวลาใน์การประมวลผู้ลน์%อย ความเร,วเป=น์

ต�วช 8ความท�น์สุม�ยต'อเหต�การณ� และความเป=น์ป3จัจั�บู�น์ของข%อม�ล

Compatibles ความเข%าก�น์ได%ก�บูเคร2&องม2อประมวลผู้ล ข%อม�ล

ด�บูท &จัะน์.าเข%าสุ�'ขบูวน์การประมวลผู้ล จั.าเป=น์ต%องเข%า ก�น์ได%ก�บูเคร2&องม2อท &ใช%ใน์การประมวลผู้ลน์�8น์ ๆ

Page 25: Data struct is_chapter1

ควิามูหมูายข้องโครงสร�างข้�อมู�ล

เป=น์การจั�ดระบูบูความสุ�มพ�น์ธ�ระหว'างข%อม�ลใน์แบูบูต'าง ๆ ก�น์ เพ2&อให%เหมาะสุมก�บูการด.าเน์�น์การก�บูข%อม�ลใน์

ระบูบูงาน์น์�8น์ ๆ และเพ2&อให%การใช%เน์28อท &ใน์หน์'วยความจั.าหล�กเก�ดประโยชน์�สุ�งสุ�ด

การรวมก�น์ของข%อม�ลเช�งเด &ยวและข%อม�ลเช�งประกอบูเข%าด%วยก�น์

เป=น์กล�'มพร%อมก�บูการก.าหน์ดความสุ�มพ�น์ธ� ต�วอย'างโครงสุร%างข%อม�ล

Array, String, List, Stack, Queue, Tree, Graph etc.

Page 26: Data struct is_chapter1

ต�วิอย+างกิารกิ�าหนดโครงสร�างข้�อมู�ลโครงสร�างข้�อมู�ลแบบอาร�เรย� ช�ดข%อม�ลต%องม ค'าชน์�ดใดชน์�ดหน์/&ง ชน์�ดของข%อม�ลจัะต%องอธ�บูายล�กษณะข%อม�ลได%

โดยตรง และล.าด�บูข%อม�ลต%องม ความสุ�มพ�น์ธ�ก�บูข%อม�ลท &เก,บู

เช'น์ อาร�เรย�ท &ใช%เก,บูข%อม�ลของเด2อน์ โดยล.าด�บูท & 0 เก,บู มกราคม , ล.าด�บูท & 1 เก,บู ก�มภาพ�น์ธ�

เป=น์ต%น์

Page 27: Data struct is_chapter1

ควิามูส�าค�ญข้องโครงสร�างข้�อมู�ล

• ม ความสุ.าค�ญต'อการประมวลผู้ลด%วยคอมพ�วเตอร� เพราะข%อม�ลท &ถ�กจั�ดเก,บูอย'างเป=น์ระเบู ยบูและข�8น์ตอน์การเข%าถ/งอย'างม ระบูบูจัะท.าให%สุะดวกใน์การจั�ดการก�บูข%อม�ลตามท &ต%องการ

Page 28: Data struct is_chapter1

กิารเล"อกิใช�โครงสร�างข้�อมู�ล

• การพ�ฒน์าโปรแกรมเพ2&อให%ได%โปรแกรมท &ม ประสุ�ทธ�ภาพใน์การท.างาน์สุ�งสุ�ด ต%องค.าน์/งถ/ง

โครงสุร%างข%อม�ลท &ใช%• กรณ ท &โปรแกรมไม'ย�'งยากซ็�บูซ็%อน์มาก ผู้�%เข ยน์โปรแกรมไม'จั.าเป=น์ต%องค.าน์/งถ/งโครงสุร%างข%อม�ลมากน์�ก เพราะโครงสุร%างข%อม�ลอาจัจัะไม'ม ผู้ลก�บู

ประสุ�ทธ�ภาพใน์การท.างาน์ของโปรแกรม • ใน์ระบูบูงาน์ใหญ'ท &ม ความสุล�บูซ็�บูซ็%อน์มาก ๆ ต%อง

ค.าน์/งถ/งโครงสุร%างข%อม�ลท &เล2อกใช%ด%วย

Page 29: Data struct is_chapter1

กิารด�าเน�นกิารกิ�บข้�อมู�ลในโครงสร�างข้�อมู�ล

การเพ�&มข%อม�ล การลบูข%อม�ล การเปล &ยน์แปลงแก%ไขข%อม�ล การค%น์หาข%อม�ล การแสุดงข%อม�ล การเร ยงล.าด�บูข%อม�ล

Page 30: Data struct is_chapter1

ประเภทึข้องโครงสร�างข้�อมู�ล Primitive data structure

เป=น์ข%อม�ลท &ม ค'าเฉพาะประเภทใดประเภทหน์/&ง เช'น์ แบูบูเลขจั.าน์วน์เต,ม (integer) แบูบูตรรกะ

(boolean) แบูบูต�วอ�กษร(character) เป=น์ต%น์

Simple data structureเก�ดจัากการน์.าเอาข%อม�ลโครงสุร%างพ28น์ฐาน์ประกอบูข/8น์มาเป=น์ช�ดของข%อม�ลท &ม ความสุ�มพ�น์ธ�ก�น์ใน์ล�กษะ

ใดล�กษณะหน์/&ง เช'น์ ข%อม�ลแบูบูอาร�เรย�

Page 31: Data struct is_chapter1

ประเภทึข้องโครงสร�างข้�อมู�ล Compound data structure

เก�ดจัากการน์.าเอาข%อม�ลองค�ประกอบูอย'างง'าย ประกอบูข/8น์เป=น์ข%อม�ลท &ม โครงสุร%างซ็�บูซ็%อน์ข/8น์

แบู'งเป=น์แบูบู linear structure และnonlinear structure

Page 32: Data struct is_chapter1

ประเภทึข้องโครงสร�างข้�อมู�ล

Primitive

data structur

e

Simpledata

structure

Compounddata structurelinear nonlin

ear

IntegerBooleanCharacter

ArrayStringRecord

StackQueueLinked-List

GraphGeneral TreeBinary Tree

Page 33: Data struct is_chapter1
Page 34: Data struct is_chapter1

อ�ลกิอร�ธี-มู (Algorithm)

ล.าด�บูข�8น์ตอน์ว�ธ ใน์การท.างาน์ของโปรแกรม เพ2&อแก%ป3ญหาใดป3ญหาหน์/&ง ซ็/&งถ%าปฏิ�บู�ต�ตาม

ข�8น์ตอน์อย'างถ�กต%องแล%ว จัะสุามารถช'วยแก% ป3ญหา หร2อประมวลผู้ลตามต%องการได%สุ.าเร,จั

ต�วอย'างเคร2&องม2อท &ใช%ใน์การแสุดงอ�ลกอร�ธ/ม การเข ยน์ซ็�โดโค%ด (Pseudo Code)

การเข ยน์ผู้�งงาน์ (Flowchart)

Page 35: Data struct is_chapter1

กิารเข้�ยน Pseudocode

ซึ่�โดโคด (PseudoCode)การน์.าค.าใน์ภาษาอ�งกฤษมาแสุดงอ�ลกอร�ท/ม หร2อ

ล.าด�บูข�8น์ตอน์การท.างาน์ของโปรแกรมเพ2&อแก%ป3ญหาใดป3ญหาหน์/&ง โดยเร ยบูเร ยงให%สุามารถสุ2&อความหมายให%เข%าใจั

ได%ว'าแต'ละข�8น์ตอน์การแก%ป3ญหาน์�8น์ท.าได%อย'างไร ร�ปแบบกิารเข้�ยนซึ่�โดโคด

การร�บูข%อม�ล และการแสุดงข%อม�ล การค.าน์วณ การเปร ยบูเท ยบู การท.างาน์แบูบูวน์ซ็.8า การข%ามไปท.าค.าสุ�&งอ2&น์

Page 36: Data struct is_chapter1

ล�กิษณะข้อง Pseudocode เป=น์เคร2&องม2อท &น์�ยมใช%ใน์การสุร%างอ�ลกอร�ท/ม ม ร�ปแบูบูคล%ายประโยคภาษาอ�งกฤษ ไม'สุามารถร�น์เป=น์โปรแกรมได%โดยตรง ไม'ข/8น์อย�'ก�บูภาษาคอมพ�วเตอร� ภาษาใดภาษาหน์/&ง ม ร�ปแบูบูประโยคท &เป=น์โครงสุร%าง เพ2&อใช%อธ�บูายราย

ละเอ ยดการพ�ฒน์า อ�ลกอร�ท/มเน์%น์ท &ประโยคก�จักรรม เพ2&อใช%ใน์การท.างาน์ของ

โปรแกรมเป=น์สุ.าค�ญ สุามารถสุร%างประโยคแบูบูเร ยงค.าสุ�&ง (Sequence)

ก.าหน์ดทางเล2อก (Selection) และการท.างาน์เป=น์รอบู(Iteration)

Page 37: Data struct is_chapter1

Pseudocode Algorithm header

Purpose Condition Return

Keywords : Pre : ความต%องการของพาราม�เตอร�ท &จัะร�บูเข%ามา

ท.างาน์ Post : ก�จักรรมท &เก�ดข/8น์และสุถาน์ะของ output

parameters Return : ค2อเง2&อน์ไขท &ม การสุ'งกล�บูไปหล�งจัากท.างาน์

Page 38: Data struct is_chapter1

ต�วิอย+าง 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ท.างาน์เสุร,จั ไม'ม การสุ'งค'าใด ๆ กล�บูไป

Page 39: Data struct is_chapter1

ต�วิอย+างกิารเข้�ยนอ�ลกิอร�ทึ-มูด�วิย 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ท.างาน์เสุร,จั ไม'ม การสุ'งค'าใด ๆ กล�บูไป

Page 40: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารร�บข้�อมู�ล

ร�ปแบูบู read var1, var2, var3, … ต�วอย'าง read id

กิารแสดงข้�อมู�ลร�ปแบูบู print var1, var2, var3,

… ต�วอย'าง print ‘Name’,name

Page 41: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารกิ�าหนดค+าร�ปแบูบู set variable to

expression/constantเช'น์

set count to 0set average to total/2

Page 42: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารค�านวิณ

ร�ปแบูบูcompute variable =

expression / constant หร2อcompute add variable to

expression/constantต�วอย'าง

compute total = num1 + num2

Page 43: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารเปร�ยบเทึ�ยบ

กิรณ�ทึ�# 1 เปร ยบูเท ยบูระหว'างค'า 2 ค'าร�ปแบูบู if (condition) then

true statement(s)else

false statement(s)endif

Page 44: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารเปร�ยบเทึ�ยบ

กิรณ�ทึ�# 1 เปร ยบูเท ยบูระหว'างค'า 2 ค'าต�วอย'าง if x > 0 then

read xelse

compute sum = x + y

endif

Page 45: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารเปร�ยบเทึ�ยบ

กิรณ�ทึ�# 2 เปร ยบูเท ยบูทางเล2อกหลายทางร�ปแบูบู case variable of

a : a-statement(s)b : b-statement(s)c : c-statement(s)

endcase

Page 46: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารเปร�ยบเทึ�ยบ

กิรณ�ทึ�# 2 เปร ยบูเท ยบูทางเล2อกหลายทางต�วอย'าง case grade of

4 : print ‘A’3 : print ‘B’2 : print ‘C’

endcase

Page 47: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า

ร�ปแบูบู loop (เง2&อน์ไข) action end loop

Page 48: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า

Do- while loop : เปร ยบูเท ยบูเง2&อน์ไขก'อน์ท.าค.าสุ�&งภายใน์

ร�ปแบูบู do while (condition)

statement(s)enddo

Page 49: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า

Do- while loop : เปร ยบูเท ยบูเง2&อน์ไขก'อน์ท.าค.าสุ�&งภายใน์

ต�วอย'าง read datado while (data <> 0)

read dataenddo

Page 50: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า

Until loop : ท.าค.าสุ�&งภายใน์ก'อน์ท &จัะม การเปร ยบูเท ยบูเง2&อน์ไข

ร�ปแบูบู repeatstatement(s)

until (condition)

Page 51: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารทึ�างานแบบวินซึ่��า

Until loop : ท.าค.าสุ�&งภายใน์ก'อน์ท &จัะม การเปร ยบูเท ยบูเง2&อน์ไข

ต�วอย'าง n = 0repeat

read id,nameprint id,namecompute n = n + 1

until (n=5)

Page 52: Data struct is_chapter1

กิารเข้�ยน Pseudocodeในส+วิน Statement Constructs กิารข้�ามูไปทึ�าค�าส�#งอ"#น

ร�ปแบูบู label :statement(s)goto label

ต�วอย'าง L :read xif(x < 0) then goto L

Page 53: Data struct is_chapter1

ต�วิอย+าง กิารเข้�ยน Algorithm ด�วิย Pseudocode

Page 54: Data struct is_chapter1

กิารประเมู�นผลข้องโปรแกิรมู

กิารใช�เน"�อทึ�#ในหน+วิยควิามูจ�า ข/8น์อย�'ก�บูการเล2อกโครงสุร%างข%อม�ล และ

การแทน์ข%อม�ล ระยะเวิลาทึ�#ใช�ในกิารทึ�างาน

ข/8น์อย�'ก�บูอ�ลกอร�ธ/มท &เล2อกใช%

โปรแกิรมูทึ�#ด�ใช�เวิลา

ในกิารทึ�างานน�อย

ใช�เน"�อทึ�#ในหน+วิยควิามู

จ�าน�อย

Page 55: Data struct is_chapter1

กิารประเมู�นประส�ทึธี�ภาพข้องอ�ลกิอร�ธี-มู Performance Analysis

การว�เคราะห�ประสุ�ทธ�ภาพของอ�ลกอร�ธ/มจัะใช%ว�ธ การว�เคราะห�ว�ธ การท.างาน์ของอ�ลกอร�ธ/ม

Performance Measurement การว�ดประสุ�ทธ�ภาพของอ�ลกอร�ธ/ม จัะ

เป=น์การว�ดผู้ลจัากการทดลองจัร�ง

Page 56: Data struct is_chapter1

วิ�เคราะห�ประส�ทึธี�ภาพข้องอ�ลกิอร�ธี-มู ว�เคราะห�หน์'วยความจั.าท &ต%องใช%ใน์การประมวล

ผู้ล หร2อเร ยกว'าว�เคราะห� Space Complexity

ว�เคราะห�เวลาท &จัะต%องใช%ใน์การประมวลผู้ล หร2อ เร ยกว'า Time Complexity

Page 57: Data struct is_chapter1

การว�เคราะห�ประสุ�ทธ�ภาพของอ�ลกอร�ธ/ม

Space/Memory : ใช%เน์28อท &ความจั.ามากน์%อยแค'ไหน์

Timeเวลาท &ใช%ใน์การประมวลผู้ล

Page 58: Data struct is_chapter1

กิารวิ�เคราะห� SPACE COMPLEXITY

การว�เคราะห�ว'าจัะต%องใช%หน์'วยความจั.าท�8งหมดเท'าไรใน์การประมวลผู้ลอ�ลกอร�ธ/มน์�8น์ •รองร�บจ�านวินข้�อมู�ลทึ�#ส+งเข้�ามูาประมูวิลผล (Input Data)ได�มูากิทึ�#ส�ดเทึ+าใด เพ"#อให�อ�ลกิอร�ธี-มูน��นสามูารถุประมูวิลผลได�อย�+

•ทึราบข้นาดข้องหน+วิยควิามูจ�าทึ�#จะต�องใช�ในกิารประมูวิลผลอ�ลกิอร�ธี-มู เพ"#อไมู+ให�กิระทึบกิ�บกิารทึ�างานข้องคนอ"#น

•เพ"#อเล"อกิค�ณล�กิษณะข้องคอมูพ�วิเตอร�ทึ�#จะใช�ต�ดต��งโปรแกิรมูทึ�#พ�ฒนาข้-�นได�อย+างเหมูาะสมู

Page 59: Data struct is_chapter1

องค�ประกิอบข้อง SPACE COMPLEXITY

Instruction Space จั.าน์วน์ของหน์'วยความจั.าท &คอมไพเลอร�จั.าเป=น์ต%องใช%

ขณะท.าการคอมไพล�โปรแกรม Data Space

จั.าน์วน์หน์'วยความจั.าท &ต%องใช%สุ.าหร�บูเก,บูค'าคงท & และต�วแปรท�8งหมดท &ต%องใช%ใน์การประมวลผู้ลโปรแกรม

Environment Stack Space จั.าน์วน์หน์'วยความจั.าท &ต%องใช%ใน์การเก,บูผู้ลล�พธ�ของ

ข%อม�ลเอาไว% เพ2&อรอเวลาท &จัะน์.าผู้ลล�พธ�น์�8น์กล�บูไปประมวลผู้ลอ กคร�8ง (พบูใน์ recursive function)

Page 60: Data struct is_chapter1

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);

Page 61: Data struct is_chapter1

ประส�ทึธี�ภาพข้องอ�ลกิอร�ทึ-มู (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

Page 62: Data struct is_chapter1

ประส�ทึธี�ภาพข้อง 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 ก,จัะสุ�งด%วย

Page 63: Data struct is_chapter1

ประส�ทึธี�ภาพข้อง 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

Page 64: Data struct is_chapter1

ประส�ทึธี�ภาพข้อง 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

Page 65: Data struct is_chapter1

ประส�ทึธี�ภาพข้อง 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

Page 66: Data struct is_chapter1

ประส�ทึธี�ภาพข้อง Nested Loops

2. ประสุ�ทธ�ภาพของ Quadratic Loop ค2อ f(n) = n2

ต�วอย'าง for ( i = 0; i < 10; i++)

for ( j = 0; j < 10; j++) application code

Page 67: Data struct is_chapter1

ประส�ทึธี�ภาพข้อง 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

Page 68: Data struct is_chapter1

BIG-O NOTATION

การว�เคราะห�อ�ลกอร�ธ/ม จัะใช%ว�ธ หาจั.าน์วน์คร�8งของการท.างาน์ของโปรแกรม โดยม�กจัะสุน์ใจัค'าโดยประมาณเท'าน์�8น์ ซ็/&งจัะใช%สุ�ญล�กษณ�ว'า O เร ยกว'า บู�Dกโอ (big O) ซ็/&งเป=น์สุ�ญล�กษณ�ทางคณ�ตศาสุตร�ท &มาจัากค.าว'า Order of Magnitude

Page 69: Data struct is_chapter1

ส�ญล�กิษณ�บ�:กิโอ (Big-O Notation) 7 มาตรฐาน์เพ2&อการว�ดผู้ลประสุ�ทธ�ภาพของอ�ลกอร�

ท/มประกอบูด%วย • O(logn) • O(n) • O(n(logn)) • O(n2) • O(nk ) • O(cn ) • O(n!)

Page 70: Data struct is_chapter1

BIG-O NOTATION แน์วความค�ดของบู�Dกโอ จัะด�จัากค'าท &ม ผู้ลกระทบูมากท &สุ�ดเพ ยง

ค'าเด ยว ค'าอ2&น์ๆท &เก &ยวข%องจัะม ผู้ลต'อฟ3งก�ช�น์น์%อยกว'า จั/งไม'สุน์ใจั และไม'

สุน์ใจัค'าคงท &ด%วย

ต�วอย'าง หาค'าบู�Dกโอของ N4 + 10N – 5ถ%า f(N) = N4 + 10N – 5

O(f(N)) = O(N4)

Page 71: Data struct is_chapter1

BIG-O NOTATION

ต�วอย'าง หาค'าบู�Dกโอของ 100N +1ถ%า f(N) = 100N +1

O(f(N)) = O(N)

Page 72: Data struct is_chapter1

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)

Page 73: Data struct is_chapter1

ส�ญล�กิษณ�บ�:กิโอ (Big-O Notation)

Page 74: Data struct is_chapter1

ส�ญล�กิษณ�บ�:กิโอ (Big-O Notation)

Page 75: Data struct is_chapter1

การว�เคราะห�ความเร,วของ 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วิ ช�า

Page 76: Data struct is_chapter1

ต�วิอย+างกิารหา Big-O

O(n)