นางสุทสาิ วงศ์ณศรี · 2019-07-01 · นางสุทสาิ วงศ์ณศรี ... ว ิเคราะห ์และปฏ ิบัติงานระบบคอมพ
Data Structures and Algorithm Analysisbupress2.bu.ac.th/ebook/sci/cs311.pdf ·...
Transcript of Data Structures and Algorithm Analysisbupress2.bu.ac.th/ebook/sci/cs311.pdf ·...
บช.บ. มหาวทยาลยธรรมศาสตร
M.S. (Computer Science)
Southern Illinois University, U.S.A.T47018-2
โครงสรางขอมลและการวเคราะหอลกอรทมData Structures and Algorithm Analysis
ผชวยศาสตราจารยสมจตต ลขตถาวร
Data Structures and Algorithm Analysis
สงวนลขสทธ พ.ศ. 2547
พมพครงแรก เดอนสงหาคม 2547
จำนวน 140 เลม
เจาของ มหาวทยาลยกรงเทพ
จดพมพโดย แผนกตำราและคำสอน มหาวทยาลยกรงเทพ
119 ถ.พระราม 4 คลองเตย กรงเทพฯ 10110
โทร. 0-2350-3500 ตอ 1850-1852
โทรสาร 0-2249-6274 0-2240-1516
Home Page: publish.bu.ac.th E-mail: [email protected]
จดจำหนายโดย รานสหกรณมหาวทยาลยกรงเทพ จำกด
119 ถ.พระราม 4 คลองเตย กรงเทพฯ 10110
โทร. 0-2350-3500 ตอ 1340
การลอกเลยนหนงสอเลมนไมวารปแบบใดตองไดรบอนญาตเปนลายลกษณอกษรจากมหาวทยาลยกรงเทพ
โครงสรางขอมลและการวเคราะหอลกอรทม
Cs311/Aum/K
สมจตต ลขตถาวร.
โครงสรางขอมลและการวเคราะหอลกอรทม = Data structures and
algorithm analysis / สมจตต ลขตถาวร.
485 หนา.
ISBN 974-219-152-2
1. โครงสรางขอมล (คอมพวเตอร). 2. คอมพวเตอรอลกอรทม.
(1) ชอเรอง.
QA76.9 .D35 ส236ค CIP
ขอมลของบตรรายการCataloging in Publication Data
ค าน า
หนงสอเรอง “โครงสรางขอมล” จดท าขนเพอใหผเรยนไดเรยนรและเขาใจเกยวกบโครงสรางขอมล ทงทเปนโครงสรางขอมลแบบสถต (Static Data Structures) และโครงสรางขอมลแบบพลวต (Dynamic Data Structures) ชนดขอมลนามธรรมหรอเอดท (ADT-Abstract Data Type)
คณลกษณะ (Specification) และการประยกตใช (Application) รวมถงการโปรแกรมในแบบมอดลาร (Modular) การออกแบบจากบนลงลาง (Top-Down Design) เนนใหเกดความเขาใจกบแนวคดในเชงทฤษฎ เพอชวยใหผเรยนมบรณาการความคดในหลายๆ เรองเขาดวยกน และสามารถน าสงทเ รยนมาประยกตใชได ฝกเทคนคการพฒนาโปรแกรมอยางเปนระบบ สามารถวเคราะหและเลอกใชโครงสรางขอมลและขนตอนวธ (Algorithm) ทเหมาะสมกบงานไดเปนอยางด
หนงสอเล ม นเหมาะกบผ เรยนทมพนฐานของการเขยนโปรแกรมเบองตนมาแลว
โดยเฉพาะผทผานการศกษาวธการเขยนโปรแกรมมาแลว จะสามารถท าความเขาใจเนอหาของหนงสอเลมนไดเปนอยางด ทงนเนองจากตลอดทงเลมผเขยนไดยกตวอยางการแกปญหาดวยการโปรแกรม (Programming) พรอมค าอธบายโดยยอ จงสามารถท าความเขาใจไดงาย และเปนพนฐานทดในการเรยนรการโปรแกรมขนสงในภายหลง
โดยภาพรวม ตลอดทงเลมไดแบงเนอหาออกเปน 13 บท บทท 1 กลาวถงแนวคดเกยวกบโครงสรางขอมล และชนดขอมลนามธรรม การแทนคาชนดขอมลพนฐาน ไดแก จ านวนเตม
จ านวนจรง อกขระ และบลน ตลอดจนการแทนคาอารเรยหนงมต สองมต หลายมต และการแทนคาสตรง บทท 2 อธบายถงโครงสรางขอมลชนดเรคคอรดรวมถงเรคคอรดแบบวาเรยนต บทท 3
เรองเซต คาของเซต การด าเนนการกบเซต การแทนคาเซต ตลอดจนวธการอานคาและพมพคาชนดเซต บทท 4 รเคอรชนหรอการเรยกซ า เปนลกษณะของโปรแกรมยอยทเรยกใชตวเอง ชวยใหการเขยนโปรแกรมสนและกระชบกวาวธการเขยนแบบธรรมดา แตมกใชหนวยความจ ามาก จงคอนขางสนเปลองหนวยความจ า บทท 5 กลาวถงพอยเตอรและลงคลสต ซงเปนโครงสรางแบบพลวต
มกนยมน ามาใชเขยนโปรแกรม เ นองจากใชเนอทในหนวยความจ าอยางมประสทธภาพ สามารถยดหยนการใชหนวยความจ าในขนาดทสอดคลองกบปรมาณขอมล การแทรกและลบขอมลใน ลงคลสตกระท าไดรวดเรวและสะดวก แตวธการเขยนโปรแกรมคอนขางซบซอน เขยนยากและท าความเขาใจยาก บทท 6 – 7 กลาวถงสแตก และการค านวณนพจนค านวณโดยอาศยสแตก ซงเปนโครงสรางแบบเขาทหลง-ออกกอน หรอไลโฟ (LIFO – Last In, First Out) เนอหาครอบคลมการด าเนนการกบสแตก วธการสรางสแตกและการประยกตใช บทท 8 โครงสรางคว ซงเปนโครงสรางแบบเขากอน-ออกกอน หรอไฟโฟ (FIFO – First In, First Out) วธการด าเนนการกบควตลอดจนการสรางควและการประยกตใช บทท 9 อธบายถงโครงสรางตนไม โดยเฉพาะเนนโครงสรางตนไมค นหาแบบทวภาค วธการแทรกและลบโหนดจากตนไมรวมถงวธการทองเขาไปในโครงสรางตนไม บทท 10 โครงสรางตนไมนพจน วธการพมพและการหาผลลพธจากตนไมนพจน การแทนตนไม
ทวภาคดวยอารเรย ตนไมความสงสมดลหรอตนไม AVL อลกอรทมของฮฟฟแมน (The Huffman
Algorithm) ซงเปนวธหนงของการเขารหสแบบความยาวแปรผน เพอชวยประหยดเนอทในการจดเกบขอมล บทท 11 กลาวถงกราฟ การแทนกราฟดวยเมทรกซ การใชกราฟเพอหาเสนทางทสนทสด ตนไมขยายนอยสด และอลกอรทมของพรม (Prim’s Algorithm) บทท 12 การคนหาและการว เคราะหประสทธภาพดวยบกโอ (Big-O) ของวธการคนหาแบบล าดบ แบบทวภาค และแบบแฮชชง บทท 13 ซงเปนบทสดทาย อธบายถงการเรยงล าดบแบบเลอก แบบฟอง แบบผสาน แบบเรว
และแบบฮป โดยจะแสดงขนตอนวธในการเรยงแตละแบบ พรอมทงวเคราะหประสทธภาพของการเรยงแตละแบบ
ทกบทในหนงสอเลมน จะมบทสรป และแบบฝกหดทายบทเพอใหผเรยนไดฝกฝน
และท าความเขาใจเนอหาในบทนนๆใหดยงขนในการผลตต าราเลมน ผ เขยนขอขอบคณทกทานทมสวนใหการสนบสนนและสง
เสรมจนหนงสอเลมนส าเรจลลวงดวยด โดยเฉพาะ Dr. Robert J. McGlinn ผซงเปนอาจารยทประสทธประสาทความรเกยวกบการเขยนโปรแกรมอยางเปนระบบใหกบผเขยนเปนปฐมฤกษ เมอครงทผเขยนไดรบทนจากมหาวทยาลยกรงเทพ เพอศกษาตอในระดบปรญญาโท สาขา Computer
Science ท Southern Illinois University ประเทศสหรฐอเมรกา ทานอาจารย McGlinn มสวนชวยอย างมากในการท าใหผเขยนเขาใจวธการวเคราะห เขาใจวธการเขยนโปรแกรมใหมโครงสรางทด เปนแรงดลใจใหผเขยนรกงานเขยนโปรแกรมตงแตบดนนเปนตนมา
ขอขอบพระคณส านกกจการสถาบนอดมศกษาเอกชน ทบวงมหาวทยาลยทใหทนอดหนนการเรยบเรยงต าราเลมน และขอขอบพระคณ รศ. ดร. ดวงแกว สวามภกด รองศาสตราจารยประจ าภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยธรรมศาสตร รศ. ดร. สมชาย ประสทธจตระกล รองศาสตราจารยประจ าภาควชาวศวกรรมคอมพวเตอร คณะวศวกรรมศาสตร จฬาลงกรณมหาวทยาลย และ ผศ. ดร. ประดนเดช นละคปต หวหนาภาควชาวศวกรรมคอมพวเตอร คณะวศวกรรมศาสตร มหาวทยาลยเกษตรศาสตร ในฐานะผทรงคณวฒ ทใหค าปรกษาในการเรยบเรยงต าราเลมน จนเสรจสมบรณ
ทายทสด ผเขยนหวงเปนอยางยงวา หนงสอเลมนจะชวยใหผเรยนไดเขาใจเนอหาเกยวกบโครงสรางข อมลและการว เคราะห อลกอรทมไดเปนอยางด เปนพนฐานทดและเปนประโยชนในการศกษาคนควาเพอการเพมพนเทคนคในการออกแบบและพฒนาโปรแกรมทมรปแบบโครงสรางทด หากทานมขอคดเหนหรอขอเสนอแนะประการใด โปรดกรณาตดตอผเขยนโดยตรงทฝายวชาการ ตก 9 ชน 2 มหาวทยาลยกรงเทพ หรอ e-mail: [email protected] ผเขยนยนดนอมรบค าแนะน าของทานเพอน าไปปรบปรงเนอหาในหนงสอเลมนใหดยงขนในโอกาสตอไป
ผศ. สมจตต ลขตถาวร
สารบญ
บทท 1 โครงสรางขอมลเบองตน (Introduction to Data Structures) 11.1 โครงสรางขอมล (Data Structures) 1
1.2 ชนดขอมลนามธรรม (Abstract Data Types - ADT) 3
1.3 ชนดขอมลพนฐานและการแทนคา(Simple Data Types and Their Representations) 7
1.3.1 การแทนคาจ านวนเตม (Integer Representation) 7
1.3.2 การแทนคาจ านวนจรง (Real Representation) 9
1.3.3 การแทนคาอกขระ (Character Representation) 10
1.3.4 การแทนคาบลน (Boolean Representation) 10
1.4 อารเรยและการแทนคา (Arrays and Their Implementations) 10
1.4.1 อารเรย 1 มต (One-Dimensional Array) 11
1.4.2 การแทนอารเรย 1 มต(One-Dimensional Array Implementation) 14
1.4.3 อารเรย 2 มต (Two-Dimensional Array) 15
1.4.4 การแทนอารเรยสองมต(Two-Dimensional Array Implementation) 17
- การแทนอารเรย 2 มตแบบใชแถวเปนหลก (Row Major) 17
- การแทนอารเรย 2 มตแบบใชคอลมนเปนหลก (Column Major) 19
1.4.5 อารเรยหลายมต (Multidimensional Array) 21
1.4.6 การแทนอารเรยหลายมต(Multidimensional Array Implementation) 22
1.5 การแทนสายอกขระหรอสตรง (Character String Implementation) 25
แบบฝกหดบทท 1 27
บทท 2 เรคคอรด (Records) 292.1 เรคคอรดคออะไร (What is a record?) 29
2.2 การประกาศตวแปรชนดเรคคอรด (Record Declarations) 30
2.3 การอางถงโครงสรางชนดเรคคอรด (Referencing Records) 33
2.4 การก าหนดคาใหกบตวแปรชนดเรคคอรด (Record Assignments) 35
2.5 การอานคาและพมพคาชนดเรคคอรด (Reading and Writing Records) 37
2.6 การใชค าสง WITH (Using WITH Statement) 38
(6)
2.7 อารเรยซงเกบขอมลชนดเรคคอรด (Array of Records) 42
2.8 เปรยบเทยบอารเรยขนานกบอารเรยซงเกบเรคคอรด(Comparing Parallel Arrays with Array of Records) 45
2.9 เรคคอรดซอนในเรคคอรด (Nested Records) 46
2.10 วาเรยนตเรคคอรด (Variant Records) 49
2.11 การประกาศวาเรยนตเรคคอรด (Variant Record Declarations) 51
2.12 การประยกตใชวาเรยนตเรคคอรด (Variant Record Applications) 54
แบบฝกหดบทท 2 57
บทท 3 เซต (Sets) 613.1 เซตคออะไร (What is a set?) 61
3.2 สญลกษณแทนเซต (Set Notation) 61
3.3 การประกาศตวแปรชนดเซต (Set Declarations) 64
3.4 คาของเซต (Set Values) 66
3.5 การก าหนดคาใหกบตวแปรชนดเซต (Set Assignments) 67
3.6 ตวด าเนนการกบเซต (Set Operators) 69
3.7 ตวด าเนนการสมพนธกบเซต (Set Relational Operators) 72
3.8 การจดการกบนพจนประเภทเซตทซบซอน (Complex Set Operations) 79
3.9 การอานคาและพมพคาชนดเซต (Reading and Writing Sets) 81
3.10 การแทนคาเซต (Set Implementation) 86
3.11 การประยกตใชเซต (Set Applications) 88
แบบฝกหดบทท 3 91
บทท 4 รเคอรชน (Recursion) 954.1 รเคอรชนคออะไร (What is recursion?) 95
4.2 กรณตวอยางเกยวกบรเคอรชน (An Example of Recursion) 95
4.3 การเขยนโพรซเยอรหรอฟงกชนแบบรเคอรซฟ(Writing Recursive Procedures and Functions) 100
4.4 การวนซ ากบการเรยกซ า (Iteration vs. Recursion) 106
4.5 การประยกตใชรเคอรชน (Applications of Recursion) 107
4.6 ปญหาทาวเวอรของฮานอย (The Towers of Hanoi Problem) 113
4.6.1 อลกอรทม (Algorithm) 117
4.6.2 การโปรแกรม (Programming) 117
(7)
แบบฝกหดบทท 4 121
กรณศกษา นพจนค านวณ (Arithmetic Expressions) 129
บทท 5 พอยเตอรและลงคลสต (Pointers and Linked Lists) 1315.1 ตวแปรชนดพอยเตอร (Pointer Variables) 132
5.2 การประกาศตวแปรชนดพอยเตอร (Pointer Declarations) 134
5.3 การก าหนดคาใหกบตวแปรชนดพอยเตอรและโหนดทชโดยพอยเตอร(Pointer and Node Assignments) 135
5.4 พอยเตอรทชไปยงเรคคอรด (Record Pointers) 141
5.5 ลงคลสตแบบโยงเดยว (Singly Linked Lists) 143
5.6 การแทรกโหนดทดานหนาของลงคลสต(Inserting Nodes at the Front of a List) 146
5.7 การทองเขาไปในลงคลสต (Traversing a Linked List) 149
5.8 การแทรกโหนดทดานปลายของลงคลสต(Inserting Nodes at the End of a List) 150
5.9 การแทรกโหนดเขาไปในลสตทเรยงล าดบ(Inserting Nodes into an Ordered List) 152
5.10 การลบโหนดออกจากลงคลสต (Deleting Nodes from a List) 158
5.10.1 การลบโหนดจากลสตทไมมการเรยงล าดบ(Deleting Nodes from an Unordered List) 159
5.10.2 การลบโหนดจากลสตทมการเรยงล าดบ(Deleting Nodes from an Ordered List) 162
5.11 การประยกตใชลงคลสต (Linked List Applications) 163
5.12 ลงค ลสตทมโหนดสวนหวและโหนดสวนหาง(Linked Lists with Headers and Trailers) 166
5.13 ลงคลสตแบบวงกลม (Circular Linked Lists) 170
5.14 ลงคลสตแบบโยงค (Doubly Linked Lists) 174
5.15 การแทรกโหนดในลงคลสตแบบโยงค(Inserting Nodes into a Doubly Linked List) 175
5.16 การลบโหนดในลงคลสตแบบโยงค(Deleting Nodes from a Doubly Linked List) 179
แบบฝกหดบทท 5 183
(8)
บทท 6 สแตก (Stacks) 1916.1 สแตกคออะไร (What is a stack?) 191
6.2 การด าเนนการกบสแตก (Operations on Stacks: Push and Pop) 191
6.3 การสรางสแตกดวยโครงสรางอารเรย(Implementation of a Stack as a Static Array) 194
6.4 การสรางสแตกดวยวธทใชงานทวไปไดด(A More General Implementation of a Stack) 198
6.5 การสรางสแตกดวยลงคลสต(Implementation of a Stack as a Linked List) 201
6.6 การประยกตใชสแตก (Stack Applications) 204
แบบฝกหดบทท 6 207
บทท 7 สแตกกบนพจนค านวณ (Stacks and Arithmetic Expressions) 2137.1 รปแบบนพจนค านวณ (Arithmetic Expression Notation) 214
- อนฟกซ (Infix)
- พรฟกซ (Prefix)
- โพสตฟกซ (Postfix)
7.2 การหาผลลพธจากนพจนโพสตฟกซ (Evaluating Postfix Expressions) 215
7.3 การใชสแตกชวยในการหาผลลพธจากนพจนโพสตฟกซ(Using Stack to Evaluate Postfix) 217
7.4 อลกอรทมในการแปลงนพจนอนฟกซเปนโพสตฟกซ(Algorithm to Convert Infix to Postfix) 220
แบบฝกหดบทท 7 223
บทท 8 คว (Queues) 2258.1 ควคออะไร (What is a queue?) 225
8.2 การด าเนนการกบคว (Operations on Queues) 225
8.3 การสรางควดวยโครงสรางอารเรย(Implementation of a Queue as a Static Array) 227
8.4 การสรางควดวยลงคลสต(Implementation of a Queue as a Linked List) 237
(9)
8.5 การสรางควดวยลงคลสตแบบวงกลม(Implementation of a Queue as a Circular Linked List) 239
8.6 การประยกตใชคว (Queue Applications) 240
แบบฝกหดบทท 8 243
กรณศกษา โปรแกรมจดควงาน (Queuing Jobs) 247
บทท 9 โครงสรางตนไม (Tree Structures) 2519.1 ความหมายของโครงสรางตนไม (Definition of a Tree Structure) 251
9.2 ศพททใชเรยกแตละสวนของตนไม (Tree Terminology) 252
9.3 โครงสรางตนไมทวภาค (Binary Tree Structures) 255
9.4 โครงสรางตนไมคนหาทวภาค (Binary Search Tree Structures) 256
9.5 การแทนโครงสรางตนไมทวภาค (Binary Search Tree Representations) 258
9.6 การแทรกโหนดเขาไปในตนไมคนหาทวภาค(Inserting Nodes into a Binary Search Tree) 260
9.7 การคนหาขอมลในตนไมคนหาทวภาค(Searching Nodes in a Binary Search Tree) 270
9.8 การลบโหนดจากตนไมคนหาทวภาค(Deleting Nodes from a Binary Search Tree) 271
9.9 ประโยชนของโครงสรางตนไมคนหาทวภาค(Advantages of a Binary Search Tree) 281
9.10 การทองเขาไปในตนไม (Tree Traversals) 283
9.11 โพรซเยอรเพอการทองตนไมแบบอนออรเดอร พรออรเดอร โพสตออรเดอร(Traversing Procedures: Inorder, Preorder and Postorder) 288
9.12 การประยกตใชตนไมคนหาทวภาค (Binary Search Tree Applications) 296
แบบฝกหดบทท 9 299
บทท 10 ตนไมทวภาคอนๆ (Other Binary Trees) 30510.1 ตนไมนพจนทวภาค (Binary Expression Trees) 305
10.2 การค านวณหาผลลพธจากตนไมนพจน(Evaluation of Expression Trees) 307
10.3 การพมพตนไมนพจน (Writing Expression Trees) 310
(10)
10.4 การสรางตนไมทวภาคเพอเกบนพจนค านวณ(Building a Binary Expression Tree) 311
10.5 การแทนตนไมทวภาคดวยอารเรย(Array Representation of Binary Trees) 318
10.5.1 ตนไมทวภาคแบบเตมตน (Full Binary Trees) 321
10.5.2 ตนไมทวภาคแบบสมบรณ (Complete Binary Trees) 321
10.6 ตนไมความสงสมดลหรอตนไม AVL
(Height-Balanced Trees or AVL Trees) 323
10.6.1 การสรางตนไม AVL (Building an AVL Tree) 326
10.6.2 การหมนซาย 1 ครง (Single Left Rotation) 326
10.6.3 การหมนซาย 2 ครง (Double Left Rotations) 327
10.6.4 การหมนขวา 1 ครง (Single Right Rotation) 329
10.6.5 การหมนขวา 2 ครง (Double Right Rotations) 330
10.6.6 วธประกาศโครงสรางตนไม AVL (AVL Tree Declarations) 337
10.6.7 การแทรกโหนดเขาไปในตนไม AVL
(Inserting Nodes into an AVL Tree) 338
10.7 อลกอรทมของฮฟฟแมน (The Huffman Algorithm) 344
10.7.1 วธการสรางตนไมฮฟฟแมน (Building a Huffman’s Tree) 348
10.7.2 อลกอรทมในการสรางตนไมฮฟฟแมน(Building a Huffman’s Tree Algorithm) 351
แบบฝกหดบทท 10 353
บทท 11 กราฟ (Graphs) 35711.1 นยามกราฟ (Graph Definition) 357
- เวอรเทกซ (Vertex, Vertices)
- เอดจ (Edges)
- กราฟไมมทศทาง (Undirected Graphs)
- กราฟมทศทาง (Directed Graphs or Digraphs)
11.2 อนดกร และเอาทดกร (Indegrees and Outdegrees) 362
11.3 กราฟสมบรณ (Complete Graphs) 362
11.4 เสนทาง (Paths) 363
11.5 กราฟมน าหนก (Weighted Graphs) 364
(11)
11.6 การแทนกราฟดวยเมทรกซหรออารเรยสองมต(Implementation of a Graph as a Matrix or Two-Dimensional Array) 365
11.7 การประกาศโครงสรางกราฟ (Graph Declarations) 367
11.8 การด าเนนการกบกราฟ (Operations on Graphs) 370
11.9 การทองเขาไปในกราฟ (Traversing a Graph) 375
11.10 การคนหาในแนวลกกอน (Depth-First Search) 375
11.11 การคนหาในแนวกวางกอน (Breadth-First Search) 382
11.12 อลกอรทมในการหาเสนทางทสนทสด (Shortest Paths Algorithm) 384
11.13 ตนไมขยาย (Spanning Trees) 394
11.13.1 ตนไมขยายนอยสด (Minimum Spanning Trees) 396
11.13.2 อลกอรทมของพรม (Prim’s Algorithm) 396
11.14 การแทนกราฟดวยวธการอน (Other Graph Implementations) 402
แบบฝกหดบทท 11 409
บทท 12 การคนหาและการวเคราะหอลกอรทม(Searching and Algorithm Analysis) 41112.1 การคนหาแบบล าดบหรอแบบเชงเสน
(Sequential Search or Linear Search) 411
12.2 การวเคราะหประสทธภาพของการคนหาแบบล าดบ(Sequential Search Algorithm Analysis) 414
12.3 บกโอ (The Big-O Notation) 414
12.4 การคนหาแบบทวภาค (Binary Search) 418
12.5 การวเคราะหประสทธภาพการคนหาแบบทวภาค(Binary Search Algorithm Analysis) 421
12.6 การคนหาดวยวธแฮชชง (Hashing) 426
- คย (Keys)
- ฟงกชนแฮช (Hash Functions)
- ตารางแฮช (Hash Tables)
12.7 การชนกนของคยและแนวทางแกไข (Collisions and Resolutions) 431
12.7.1 ลเนยรโพรบบง (Linear Probing) 431
12.7.2 บกเกต (Buckets) 435
12.7.3 เชนนง (Chaining) 436
(12)
12.8 การวเคราะหประสทธภาพการคนหาดวยวธแฮชชง(Hash Algorithm Analysis) 437
แบบฝกหดบทท 12 439
บทท 13 การเรยงล าดบและการวเคราะหอลกอรทม(Sorting and Algorithm Analysis) 44113.1 การเรยงแบบเลอก (Selection Sort) 441
13.2 การวเคราะหประสทธภาพของการเรยงแบบเลอก(Selection Sort Algorithm Analysis) 444
13.3 การเรยงแบบฟอง (Bubble Sort) 446
13.4 การวเคราะหประสทธภาพของการเรยงแบบฟอง(Bubble Sort Algorithm Analysis) 452
13.5 การเรยงแบบผสาน (Merge Sort) 453
13.6 การวเคราะหประสทธภาพของการเรยงแบบผสาน(Merge Sort Algorithm Analysis) 457
13.7 การเรยงแบบเรว (Quick Sort) 458
13.8 การวเคราะหประสทธภาพของการเรยงแบบเรว(Quick Sort Algorithm Analysis) 465
13.9 การเรยงแบบฮป (Heap Sort) 466
13.10 การวเคราะหประสทธภาพของการเรยงแบบฮป(Heap Sort Algorithm Analysis) 477
แบบฝกหดบทท 13 479
บรรณานกรม 481
ภาคผนวก 483