บทที่ 9 การเรียงลำดับข้อมูล ( sorting )

52
บบบบบ บบบบบ 9 9 บบบ บบบ บบบบบบบบบบบ บบบบบบบบบบบ บบบบบบ บบบบบบ ( ( Sorting Sorting ) ) By Juthawut By Juthawut Chantharamalee Chantharamalee 1 ววววววววววววววววววว ววววววววววววววววววว ( ( Data Data Structure) Structure) วววว วววว 4122202 4122202

Upload: meliora-terris

Post on 13-Mar-2016

29 views

Category:

Documents


0 download

DESCRIPTION

บทที่ 9 การเรียงลำดับข้อมูล ( Sorting ). By Juthawut Chantharamalee. ประเภทการเรียงลำดับข้อมูล (Sort Classifications). การเรียงลำดับข้อมูลแบบภายใน (Internal Sorting). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

บทท บทท 9 9 การเรยงการเรยงลำาดบขอมล ลำาดบขอมล ((SortingSorting))

By Juthawut By Juthawut ChantharamaleeChantharamalee 11วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Page 2: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

เปนการเรยงลำาดบขอมลภายในหนวยความจำาหลก เปนการเรยงลำาดบขอมลภายในหนวยความจำาหลก ((Primary MemoryPrimary Memory ) ) ของเครองคอมพวเตอร โดยขอมลของเครองคอมพวเตอร โดยขอมลทงหมดจะอยในหนวยความจำาหลกในระหวางการประมวลผลทงหมดจะอยในหนวยความจำาหลกในระหวางการประมวลผลเพอจดเรยงขอมล สำาหรบการเรยงลำาดบขอมลแบบภายในเพอจดเรยงขอมล สำาหรบการเรยงลำาดบขอมลแบบภายในจะเหมาะสมกบขอมลในปรมาณไมมาก อนเนองมาจากหนวยจะเหมาะสมกบขอมลในปรมาณไมมาก อนเนองมาจากหนวยความจำาหลกนนมความจำากด โดยตวอยางวธการเรยงลำาดบความจำาหลกนนมความจำากด โดยตวอยางวธการเรยงลำาดบขอมลแบบภายใน เชน ขอมลแบบภายใน เชน Insertion Sort, Shell Sort, Insertion Sort, Shell Sort, Selection Sort, Heap Sort, Bubble Sort, Selection Sort, Heap Sort, Bubble Sort, และ และ Quick Sort Quick Sort เปนตนเปนตน

22วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ประเภทการเรยงลำาดบขอมล ประเภทการเรยงลำาดบขอมล (Sort Classifications) (Sort Classifications) การเรยงลำาดบขอมลแบบภายใน การเรยงลำาดบขอมลแบบภายใน

(Internal Sorting) (Internal Sorting)

Page 3: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

เปนการเรยงลำาดบขอมลภายในหนวยความเปนการเรยงลำาดบขอมลภายในหนวยความจำาหลก เฉพาะสวนขอมลทตองการจดการเรยงในจำาหลก เฉพาะสวนขอมลทตองการจดการเรยงในขณะนน กลาวคอ ขอมลทงหมดทตองการจดเรยงจะขณะนน กลาวคอ ขอมลทงหมดทตองการจดเรยงจะไมสามารถนำาไปใสไวในหนวยความจำาหลกพรอมกนไมสามารถนำาไปใสไวในหนวยความจำาหลกพรอมกนเพอประมวลผลไดทงหมดในคราวเดยวกน เนองจากเพอประมวลผลไดทงหมดในคราวเดยวกน เนองจากมปรมาณขอมลมาก ดงนนจงตองกนขอมลบางสวนมปรมาณขอมลมาก ดงนนจงตองกนขอมลบางสวนไปเกบไวในสอจดเกบขอมลสำารอง ไปเกบไวในสอจดเกบขอมลสำารอง ((Secondary Secondary StorageStorage ) ) เชน ฮารดดสก หรอเทป สำาหรบเรยงเชน ฮารดดสก หรอเทป สำาหรบเรยงลำาดบขอมลแบบภายนอกนเหมาะสมกบการเรยงลำาดบขอมลแบบภายนอกนเหมาะสมกบการเรยงลำาดบขอมลในปรมาณมากลำาดบขอมลในปรมาณมาก

33วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

การเรยงลำาดบขอมลแบบภายนอก การเรยงลำาดบขอมลแบบภายนอก (External Sorting) (External Sorting)

Page 4: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Selection Heap Insertion Heap Bubble Quick

44วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 91. ประเภทของการเรยงลำาดบขอมล

Page 5: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1.11 1.11 การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Selection Sort Selection Sort 1.12 1.12 การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Heap SortHeap Sort

55วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

1. 1. ประเภทการเรยงลำาดบประเภทการเรยงลำาดบแบบภายใน แบบภายใน (Internal) (Internal) 1.1 1.1 วธการเรยงลำาดบแบบวธการเรยงลำาดบแบบ

เลอก เลอก (Selection) (Selection)

1.21 1.21 การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Insertion Sort Insertion Sort 1.22 1.22 การเรยงการเรยงลำาดบขอมลแบบ ลำาดบขอมลแบบ Shell SortShell Sort

1.2 1.2 วธการเรยงลำาดบแบบวธการเรยงลำาดบแบบแทรก แทรก (Insertion) (Insertion)

Page 6: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1.1.33 1 1 การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Bubble Sort Bubble Sort 1. 1.33 2 2 การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Quick Quick SortSort

66วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

2. 2. ประเภทการเรยงลำาดบแบบประเภทการเรยงลำาดบแบบภายนอก ภายนอก (External) (External)

1.3 1.3 วธการเรยงลำาดบแบบแลกวธการเรยงลำาดบแบบแลกเปลยน เปลยน (Exchange) (Exchange)

22 .21 .21 การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Merge Sort Merge Sort

22 ..11 วธการเรยงวธการเรยงลำาดบแบบผสานลำาดบแบบผสาน

Page 7: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

ขอมลสามารถทจะทำาการจดเรยงจากนอยไปขอมลสามารถทจะทำาการจดเรยงจากนอยไปมาก มาก ((AscendingAscending)) หรอลำาดบจากมากไปนอย หรอลำาดบจากมากไปนอย ((DescendingDescending)) กได ซงลำาดบการเรยงจะขนกได ซงลำาดบการเรยงจะขนอยกบคณสมบตของขอมลทจะนำาไปจดเรยง อยกบคณสมบตของขอมลทจะนำาไปจดเรยง ตวอยางขอมลทเหมาะกบการจดเรยงจากนอยตวอยางขอมลทเหมาะกบการจดเรยงจากนอยไปมาก เชน สมดโทรศพท พจนานกรม สำาหรบไปมาก เชน สมดโทรศพท พจนานกรม สำาหรบการจดเรยงจากมากไปหานอย เชน เกรดเฉลยการจดเรยงจากมากไปหานอย เชน เกรดเฉลยสะสมของนกศกษา หรอคะแนนของผเลนเกมส สะสมของนกศกษา หรอคะแนนของผเลนเกมส ซงมกจะเปนสถตจากลำาดบสงลงมาตำา เปนตนซงมกจะเปนสถตจากลำาดบสงลงมาตำา เปนตน

77วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ลำาดบการจดเรยง ลำาดบการจดเรยง (Sort Order) (Sort Order)

Page 8: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

ประสทธภาพของการเรยงลำาดบขอมล คอ การประสทธภาพของการเรยงลำาดบขอมล คอ การวดผลประสทธภาพเชงสมพนธของการเรยงลำาดบวดผลประสทธภาพเชงสมพนธของการเรยงลำาดบขอมล ซงโดยปกตแลว ไดมการประมาณคาจากการขอมล ซงโดยปกตแลว ไดมการประมาณคาจากการเปรยบเทยบ และการเคลอนยายลำาดบเพอจดเรยงเปรยบเทยบ และการเคลอนยายลำาดบเพอจดเรยงภายในลสตทไมไดเรยงลำาดบขอมลไว โดยในทนจะภายในลสตทไมไดเรยงลำาดบขอมลไว โดยในทนจะกลาวถงการวดประสทธภาพของการเรยงลำาดบกลาวถงการวดประสทธภาพของการเรยงลำาดบขอมลแบบภายในเทานน ซงประสทธภาพของการขอมลแบบภายในเทานน ซงประสทธภาพของการเรยงลำาดบขอมลของแตละอลกอรทมจะใชแทนเรยงลำาดบขอมลของแตละอลกอรทมจะใชแทนสญลกษณบกโอ เชน ปประสทธภาพการจกเรยงสญลกษณบกโอ เชน ปประสทธภาพการจกเรยงขอมล ขอมล O(n) O(n) ยอมดกวา ยอมดกวา O(n2)O(n2)

88วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ประสทธภาพของการเรยงลำาดบประสทธภาพของการเรยงลำาดบขอมล ขอมล (Sort Efficiency) (Sort Efficiency)

Page 9: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Selection Sort Selection Sort หรอการหรอการเรยงลำาดบขอมลแบบเลอกเรยงลำาดบขอมลแบบเลอก ถอวาเปนวธการเรยงลำาดบถอวาเปนวธการเรยงลำาดบขอมลทเรยบงาย ตรงไปตรงมาวธหนง การทำางานในขอมลทเรยบงาย ตรงไปตรงมาวธหนง การทำางานในแตละรอบของวธน จะทำาการคนหาหรอสแกนคาคนหาตงแตละรอบของวธน จะทำาการคนหาหรอสแกนคาคนหาตงแตแรกจนถงตวสดทาย หลงจากทไดพบตำาแหนงของแตแรกจนถงตวสดทาย หลงจากทไดพบตำาแหนงของคาทนอยทสดแลวกจะทำาการสลบตำาแหนงกน จากนนในคาทนอยทสดแลวกจะทำาการสลบตำาแหนงกน จากนนในรอบตอไป กจะขยบตำาแหนงไปยงตวถดไป โดยจะทำาเชนนรอบตอไป กจะขยบตำาแหนงไปยงตวถดไป โดยจะทำาเชนนไปเรอยๆ จนครบทกตว กจะไดชดขอมลทจดเรยงไปเรอยๆ จนครบทกตว กจะไดชดขอมลทจดเรยงเรยบรอยสมบรณเรยบรอยสมบรณ

99วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

วธการเรยงวธการเรยงลำาดบขอมล ลำาดบขอมล การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Selection SortSelection Sort

Page 10: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Sorted Unsorted

1010วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 92 หลกการเรยงลำาดบขอมลแบบ Selection Sort

… Minimum ( a[k] … a[last])0 j k Last

Wall

Page 11: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Unsorted

1111วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Ex. การเรยงขอมลแบบ Selection Sort โดยการใชหลกเกณฑจากรปท 92. โดยสมมตวามขอมลทตองการจดเรยงดงน {23, 78, 45, 8, 32, 56}ขนตอนท 1 : เรมตนจากขอมลตนฉบบ ซงเปนชดตวเลขทยงไมผานการจดเรยงทงหมด โดยใหทำาการคนหาคาทนอยทสดจากชองท 1 ไปจนถงชองท 6 ผลทไดคอ 8 หลงจากนนใหทำาการสลบตำาแหนงกบ 23 และในสวนของกำาแพงกจะเลอนขยบเขาไปหนงตำาแหนง

23 78 45 8 32 56

Unsorted8 78 45 23 32 56

Page 12: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1212วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ขนตอนท 2 : เรมตนจากชองท 2 คอตวเลข 78 ไปจนถงชองท 6 พบคานอยทสกคอ 23 ใหทำาการสลบตำาแหนงระหวางตวเลขตวเลขท 78 กบ 23 และในสวนของกำาแพงกจะเลอนขยบเขาไปหนงตำาแหนง

8 23 45 78 32 56

Unsorted8 78 45 23 32 56

Sorted Unsorted

Page 13: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1313วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ขนตอนท 3: เรมตนจากชองท 3 คอตวเลข 45 ไปจนถงชองท

6 พบคานอยทสกคอ 3 2 ใหทำาการสลบตำาแหนงระหวางตวเลขตวเลขท 45 กบ 3 2 และในสวนของกำาแพงกจะเลอนขยบเขาไปหนงตำาแหนง

8 23 32 78 45 56

Sorted Unsorted

8 23 45 78 32 56

Sorted Unsorted

Page 14: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1414วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ขนตอนท 5 : สำาหรบรอบน จกเปนรอบสดทาย เนองจากภายในลสตเหลอเพยงขอมลสองตวสดทายคอ 78 และ 56 ปรากฏวาคา 56 นอยกวา จงทำาการสลบตำาแหนงกน หลงจากนน กคงเหลอไวแตเพยงขอมลทไดจดเรยงไวอยางสมบรณ

8 23 32 45 56 78

Sorted8 23 32 45 78 56

Sorted Unsorted

Page 15: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1515วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

อลกอรทมท 91. Selection Sort

Algorithm seleetionSort (list, last)Sorts list array by selecting smallest element inunsorted portion of array and exchanging it with elementat the beginning of the unsorted list Pre list must contain at least one item last contains index to last element in the list Post list has been rearranged smallest to largest1 set current to 02 loop (until last element sorted) 1 set smallest to current 2 set walker to current + 1 3 loop (walker <= last) 1 if (walker key < smallest key) 1 set smallest to walker 2 increment walker 4 end loop Smallest selected: exchange with current element. 5 exchange (current, smallest) 6 increment current3 end loopend seleetionSort

Page 16: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Heap Sort Heap Sort จะจะเรมตนทำางานจากอารเรยทมจดการเรยงลำาดบเรมตนทำางานจากอารเรยทมจดการเรยงลำาดบขอมลแบบฮพ ซงคณสมบตสำาคญของฮพทรกขอมลแบบฮพ ซงคณสมบตสำาคญของฮพทรกคอ รทโหนดจะมคามากทสด และในการแทนคอ รทโหนดจะมคามากทสด และในการแทนฮพในอารเรย คาทมากทสดจะอยทตำาแหนงฮพในอารเรย คาทมากทสดจะอยทตำาแหนงแรกสลบกบคาสดทายของฮพ และจะดำาเนนแรกสลบกบคาสดทายของฮพ และจะดำาเนนการเชนนไปจนกระทงไดจดการกบขอมลทงการเชนนไปจนกระทงไดจดการกบขอมลทงหมดในฮพกจะไดขอมลทจดเรยงเรยบรอยหมดในฮพกจะไดขอมลทจดเรยงเรยบรอยอยางสมบรณอยางสมบรณ

1616วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส 41222024122202

การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Heap SortHeap Sort

Page 17: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1717วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 9.3 การแทนฮพทรในหนวยความจำาดวยอารเรย

[0]

78

32

56

45 8

[1]

[3]

[4]

23

19

[2]

[5]

[6]

78 56 32 45 8 23

[0] [1] [2] [3] [4] [5] [6]

19

(a) ฮพทร (b) การแทนฮพทรในอารเรย

Page 18: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1818

วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 94. ขนตอนการเรยงลำาดบขอมลแบบ Heap Sort

78 32 56 8 23 45 heap

After heap

56 32 45 8 23 78 heap

After pass 1 and reheap

sort45 32 23 8 56 78

heap

After pass 2 and reheap

sort32 8 23 45 56 78

heap

After pass 3 and reheap

sort23 8 32 45 56 78 heap

After pass 4 and reheap

sort8 23 32 45 56 78

heap

After pass 5 and reheap

sort8 23 32 45 56 78

After pass 6 and reheap

sort

Page 19: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

1919วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

อลกอรทมท 9.2 Heap Sort

Algorithm heapSort (heap, last)Sort an array, using a heap. Pre heap array is filled last is index to last element in array Post heap array has been sorted Create heap1 set walker to 12 loop (heap built) 1 reheapUp (heap, walker) 2 increment walker3 end loop Heap created. Now sort it.4 set sorted to last5 loop {until all data sorted) 1 exchange (heap, 0, sorted) 2 decrement sorted 3 reheapDown (heap, 0, sorted)6 end loopend heapSort

Page 20: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

2020วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ประสทธภาพของอลกอรทมการเรยงลำาดบขอมลแบบ Heap ทเขยนอยในรปแบบสญลกษณบกโอกคอ O(nlogn))

Selection Sorted

รปท 9.5 ตารางเปรยบเทยบจำานวนรอบการทำางานของ Selection Sort และ Heap Sort

Heap Sorted

Number of loops n 25 625 116

100 10,000 664 500 250,000 4,482

1000 1,000,000 9,965 2000 4,000,000 10,965

Page 21: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ insertion Sort insertion Sort หรอการเรยงลำาดบขอมลแบบแทรก จดเปนวธหรอการเรยงลำาดบขอมลแบบแทรก จดเปนวธการเรยงลำาดบขอมลทไมซบซอนเชนกน วธนการเรยงลำาดบขอมลทไมซบซอนเชนกน วธนเปนพนฐานทางเทคนคทนำาไปใชในการเรยงไฟเปนพนฐานทางเทคนคทนำาไปใชในการเรยงไฟดวยมอ โดยผเลนจะทำาการจดเรยงไฟดวยการดวยมอ โดยผเลนจะทำาการจดเรยงไฟดวยการดงไฟทตองการออกมาแทรกในตำาแหนงทเหมาะดงไฟทตองการออกมาแทรกในตำาแหนงทเหมาะสมในชวงลำาดบการเรยงมนขณะนน โดยสมในชวงลำาดบการเรยงมนขณะนน โดยพจารณาจากรปท พจารณาจากรปท 96 96 ซงเปนภาพแสดงซงเปนภาพแสดงหลกการเรยงลำาดบขอมลแบบ หลกการเรยงลำาดบขอมลแบบ Insertion Insertion SortSort 2121วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส

41222024122202

การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Insertion SortInsertion Sort

Page 22: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Sorted Unsorted

2222วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 96. หลกการเรยงลำาดบขอมลแบบ Insertion Sort

… … 0 j k Last

Wall

Page 23: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Unsorted

2323วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Ex. การเรยงขอมลแบบ Insertion Sort โดยการใชหลกเกณฑจากรปท 96. โดยสมมตวามขอมลทตองการจดเรยงดงน {23, 78, 45, 8, 32, 56}ขนตอนท 1 : เรมตนจากขอมลตนฉบบ ซงเปนชดตวเลขทยงไมผานการจดเรยง กำาแพงหรอดรรชนอยทตำาแหนงสมาชกลำาดบท 2 ดวยการเปรยบเทยบคาตวเลขชองท 1และชองท 2 ผลปรากฏวาชองท 2 คอคาตวเลข 7

8 ซงมคามากกวา 23 จงถอวาเรยงลำาดบอยแลว ดงนนกใหขยบกำาแพงหรอดรรชนไปอกหนงตำาแหนง

23 78 45 8 32 56

Sort Unsorted

23 78 45 8 32 56

Page 24: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

2424วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ขนตอนท 2 : ตำาแหนงดรรชน ณ ขณะนขยบไปอยหนาชองท 3ใหทำาการนำาคาตวเลขจากชองท 3 ไป เปรยบเทยบกบชดตวเลขในสวนทจดเรยงไวแลว ซงอยสวนหนา ผลลพธทไดคอคาตวเลข 45 จะนำาไปแทรกในตำาแหนงท 2ซงอยระหวางคา 23 กบ 78

23 78 45 8 32 56

Sort Unsorted

23 45 78 8 32 56

Sort Unsorted

Page 25: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

2525วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ขนตอนท 3 : ตำาแหนงดรรชน ณ ขณะนขยบไปอยหนาชองท 4 ใหทำาการนำาคาตวเลขจากชองท 4 ไป เปรยบเทยบกบชดตวเลขในสวนทจดเรยงไวแลวทงหมด คา 8 จะถกแทรกไวทตำาแหนงแรกในสวนของขอมลทไดจดเรยง

23 45 78 8 32 56

Sort Unsorted

8 23 45 78 32 56

Sort Unsorted

Page 26: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

2626วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ขนตอนท 4 : ตำาแหนงถดไปคอชองท 5 ใหนำาคาตวเลขจากชองท 5 ซงในทนคอคา 32 ไปเปรยบเทยบกบชดตวเลขในสวนทจดเรยงทงหมด ผลปรากฏวาคา 32 ซงอยตำาแหนงท 5 นจะนำาไปแทรกไวทตำาแหนงในสวนทไดจดเรยงไวโดยแทรกไวหนาคา 45

8 23 45 78 32 56

Sort 8 23 32 45 78 56

Sort Unsorted

Page 27: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

2727วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

ขนตอนท 5: รอบนจดเปนรอบสดทาย โดยขณะนเหลอเพยงขอมลตำาแหนงสดทายเพยงตวเดยวทจะตองนำาไปเปรยบเทยบเพอจดเรยง ผลปรากฏวา คาตวเลข 56 จะถกนำาไปแทรกไวในตำาแหนงท 5 หลงจากนนจะไดชดตวเลขทผานการจดเรยงแลวอยางสมบรณ

8 23 32 45 78 56

Sort 8 23 32 45 56 78

Sort

Page 28: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

2828วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

อลกอรทมท 9.3 Insertion Sort

Algorithm insertionSort (list, last)Sorts list array using insertion sort. The array isdivided into sorted and unsortsd lists. With each pass, thefirst element in the unsorted list is inserted into the sorted list. Pre list must contain at least one item last is an index to last element in the list Post list has been rearranged1 set current to 12 loop (until last element sorted) 1 move current element to hold 2 set walker to current - 1 3 loop (walker >= 0 AND hold key < walker key) 1 move walker element right one element 2 decrement walker 4 end loop 5 move hold to walker + 1 element 6 increment current3 end loopend insertionSort

Page 29: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Bubble Sort Bubble Sort เปนการเปนการเรยงลำาดบขอมลดวยการเปรยบเทยบขอมลเปนคทเรยงลำาดบขอมลดวยการเปรยบเทยบขอมลเปนคทอยตดกนในแตละรอบการทำางาน เพอสลบตำาแหนงอยตดกนในแตละรอบการทำางาน เพอสลบตำาแหนงกนหากขอมลอยผดลำาดบ โดยหากเปนการจดเรยงกนหากขอมลอยผดลำาดบ โดยหากเปนการจดเรยงลำาดบขอมลจากนอยไปมาก การทำางานจะเรมจากลำาดบขอมลจากนอยไปมาก การทำางานจะเรมจากขอมลตวสดทายภายในลสต และทำาการเปรยบเทยบขอมลตวสดทายภายในลสต และทำาการเปรยบเทยบกบคาถดไปทอยขางหนาทอยตดกน โดยหากตวเลขทกบคาถดไปทอยขางหนาทอยตดกน โดยหากตวเลขทอยทายมคานอยกวา กจะทำาการสลบตำาแหนง อยทายมคานอยกวา กจะทำาการสลบตำาแหนง ((SwapSwap ) ) กบตวกอนหนาเพอขยบลอยเหนอขนไปกบตวกอนหนาเพอขยบลอยเหนอขนไปเรอยๆ จนกวาขอมลในลสตจะถกจดเรยงทงหมดเรอยๆ จนกวาขอมลในลสตจะถกจดเรยงทงหมด

2929วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส 41222024122202

การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Bubble SortBubble Sort

Page 30: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Sorted Unsorted

3030วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 97 หลกการเรยงลำาดบขอมลแบบ Bubble Sort

… … 0 j k Last

Wall

Bubble up

Page 31: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Unsorted3131วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส

41222024122202

Ex. การเรยงขอมลแบบ Bubble Sort โดยการใชหลกเกณฑจากรปท 97. โดยสมมตวามขอมลทตองการจดเรยงดงน {23, 78, 45, 8, 56, 32}รอบท 1 : 23 78 45 8 56 32

23 78 45 8 32 56

23 78 45 8 32 56

23 78 8 45 32 56

23 8 78 45 32 56

8 23 78 45 32 56

Page 32: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

3232วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รอบท 2 :

8 23 32 45 32 56

8 23 78 45 32 56

8 23 78 45 32 56

8 23 78 32 45 56

8 23 32 78 32 56

Sorted Unsorted

Page 33: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

Sorted Unsorted

3333วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รอบท 3 :

8 23 32 78 45 56

8 23 32 45 78 56

8 23 32 45 78 56

8 23 32 78 32 56

Sorted

รอบท 4 :

8 23 32 45 78 56

8 23 32 45 56 78

8 23 32 45 56 78

8 23 32 45 56 78

Page 34: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

3434วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

อลกอรทมท 9.4 Bubble Sort

Algorithm bubbleSort (list, 'last)Sort an array using* .bubble sort. Adjacentelements, are compared gad exchanged until list is completely ordered. pre list mast contain at least one item last contains index to last element in the list Post list has been rearranged in sequence low to high1 set current to 02 set sorted to false3 loop (current <= last AMD sorted false) Each iteration is one sort pass. 1 set walker to last 2 set sorted to true 3 loop (walker > current) 1 if (walker data < walker - 1 data) Any exchange means list is not sorted. 1 set sorted to false 2 exchange- (list, walker, walker - 1} 2 end if 3 decrement walker 4 end loop 5 increment current '4 end loopend bubbleSort

Page 35: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Quick Sort Quick Sort เปนการเปนการเรยงลำาดบขอมลดวยการใชหลกการแบงสวน เรยงลำาดบขอมลดวยการใชหลกการแบงสวน ((PartitionPartition ) ) ขอมลเปนหลก แตละรอบของการขอมลเปนหลก แตละรอบของการทำางานจะมการเลอกอลเมนตตวหนงทเรยกวา ทำางานจะมการเลอกอลเมนตตวหนงทเรยกวา PivotPivot ทใชสำาหรบเปนตวแบงแยกสวนขอมล ซงทใชสำาหรบเปนตวแบงแยกสวนขอมล ซงแตละสวนนนอาจจะมจำานวน อลเมนตทไมเทาแตละสวนนนอาจจะมจำานวน อลเมนตทไมเทากนกได โดยการแบงสวนภายในลสต จะแบงออกเปน กนกได โดยการแบงสวนภายในลสต จะแบงออกเปน

3 3 สวนดวยกน ซงมประสทธภาพมากกวา เพราะมสวนดวยกน ซงมประสทธภาพมากกวา เพราะมจำานวนการสลบตำาแหนงจะนอยกวาการจดเรยงจำานวนการสลบตำาแหนงจะนอยกวาการจดเรยงลำาดบแบบ ลำาดบแบบ Bubble SortBubble Sort

3535วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Quick SortQuick Sort

Page 36: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

3636วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

After 1st partition

รปท 98 แสดงการแบงสวนขอมลการเรยงลำาดบขอมลแบบ Quick Sort

keys < pivot pivot keys >= pivot After 2nd partition< pivot pivot >= pivot After 3rd partition

<--- Sorted --> After 4th partition<-------- Sorted --------> After 5th partition<-------- Sorted --------> < pivot pivot >= pivot After 6th partition<------------- Sorted ----------------> After 7th partition<------------------- Sorted ------------------>

1. สวนทหนง คอกลมอลเมนตทสมาชกขอมลมคานอยกวา pivot key 2. สวนทสอง คอคา pivot key ทใชเปนคาสำาหรบแยกสวนขอมล ซงปกตแลวตำาแหนงทเหมาะสมของคานจะอยระหวางลสตทมคานอยกวา pivot key กบลสตทมคามากกวาหรอเทากบคา pivot key

3. สวนทสาม คอกลมอลเมนตทสมาชกขอมลมคามากกวาหรอเทากบคาของ pivot key

Page 37: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

สำาหรบอลกอรทมตนแบบของการเรยงลำาดบขอมลสำาหรบอลกอรทมตนแบบของการเรยงลำาดบขอมลแบบ แบบ Quick Sort Quick Sort ทพฒนาโดย ทพฒนาโดย Hoare Hoare นน ไดมการนน ไดมการเลอก เลอก Pivot Key Pivot Key ทตำาแหนง อลเมนตแรกของลสต ตอทตำาแหนง อลเมนตแรกของลสต ตอมาในราวป คมาในราวป ค..ศศ . 1969 . 1969, R.C. Singleton , R.C. Singleton ไดทำาการไดทำาการปรบปรงลำาดบการเลอกคา ปรบปรงลำาดบการเลอกคา Pivot Key Pivot Key จากคากลาง จากคากลาง ((median valuemedian value ) ) ซงประกอบดวย ซงประกอบดวย 3 3 อลเมนตดวยกน อลเมนตดวยกน คออลเมนตฝงซาย คออลเมนตฝงซาย ((LeftLeft ) ) อลเมนตฝงขวา อลเมนตฝงขวา ((RightRight ) ) และและอลเมนตทอยตรงกลางของลสต การกำาหนดคากลางภายอลเมนตทอยตรงกลางของลสต การกำาหนดคากลางภายในลสตจงตองเปนไปตามรปแบบดงนในลสตจงตองเปนไปตามรปแบบดงน

3737วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Left element <= middle element <= right element

Page 38: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

3838วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

อลกอรทมท 9.5 Median left

Algorithm medianLeft {sortData, left, right)Find the median value of an array and place it in the first(left) location. Pre sortData is an array of at least three elements left and right are the boundaries of the array Post median value locate and place left Rearrange sortData so median value is in middle location.1 set mid to (left + right) /22 if (left key > mid key) 1 exchange (sortData, left, mid)3 end if4 if (left key > right key) l exchange (sortData, left, right)5 end if6 if {mid key > right key) 1 exchange (sortData, mid, right)7 end if Median Is in middle location. Exchange with left.8 exchange (sortData, left, mid)end medianLeft

Page 39: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

L

3939วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Ex. การเรยงขอมลแบบ Quick Sort โดยสมมตวามชดตวเลขทตองการนำาจดเรยงดงน {78, 21, 14, 97, 87, 62, 74, 85, 76, 45, 84, 22} ดงนนตำาแหนงคากงกลางในลสตจากสตร set mid to (left + right) / 2 จากชดลำาดบท 1 อลกอรทมท 95. จะไดเทากบ 1 12 2( + )/ กคอตำาแหนงท 6 ดงนนกจะได Left Key = 78, Mid Key = 62 และ Right Key = 22 แตวาทงสามอลเมนตนนยงอยในตำาแหนงทไมถกตอง จงตองดำาเนนการเปรยบเทยบเงอนไขตามอลกอรทมท 95. เพอหาคากงกลางทถกตองทแสดงไดดงตอไปน เมอไดตำาแหนง Left Key, Mid Key และ Right Key

78 21 14 97 87 62 74 85 76 45 84 22

M R

เปรยบเทยบคา Left Key > Mid Key หรอไม ถาใชใหสลบตำาแหนง

62 21 14 97 87 78 74 85 76 45 84 22

Page 40: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4040วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

เปรยบเทยบคา Left Key > Right Key หรอไม ถาใชใหสลบตำาแหนง

22 21 14 97 87 78 74 85 76 45 84 62เปรยบเทยบคา Mid Key > Right Key หรอไม ถาใชใหสลบตำาแหนง

22 21 14 97 87 62 74 85 76 45 84 78

ณ ขณะนไดเปนไปตามรปแบบแลวคอ Left element <= middle element <= right elementซงกคอ 22 <= 62 <= 78 จากนนกดำาเนน

การยายตำาแหนง Pivot Key ไปยงตำาแหนงแรกเพอถอครองไวกอน จนกระทงไดจดเรยงและแบงลสตไดแลว จงคอยดำาเนนการยายกลบมาในตำาแหนงทถกตองตอไป

Page 41: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4141วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Pivot Key

62 21 14 97 87 22 74 85 76 45 84 78 ใหสงเกตตวชสองตวซงประกอบดวย sortLeft และ sortRight ซงถกวางไวตำาแหนงตนลสตและทายลสต โดยตำาแหนง sortLeft นนจะอยถดจาก Pivot Key ไปหนงตำาแหนง สำาหรบเงอนไขของการดำาเนนงานมดงนคอ การเลอนตำาแหนงของ sortLeft และ sortRight > sortLeft จะเลอนไปทางขวาเรอยๆ เมอ sortLeft มคานอยกวา Pivot Key > sortRight จะเลอนไปทางซายเรอยๆ เมอ sortRight มคามากกวา Pivot Key ตวชทงสองจะหยดเมอ > คาของ sortLeft มคามากกวา Pivot Key > คาของ sortRight มคานอยกวา Pivot Key

sortLeft

sortRight

Page 42: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4242วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Exchange

62 21 14 97 87 22 74 85 76 45 84 78

โดยเมอเปนไปตามเงอนไขขางตนแลวใหดำาเนนการสลบตำาแหนงกน

sortLeft

sortRight

Exchange

62 21 14 45 87 22 74 85 76 97 84 78

หลงจากนนตวชทงสองกเลอนไปเรอยๆ ซงเปนไปตามเงอนเชนเดม จนกระทงหยดเลอนเมอตรงตามเงอนไข

sortLeft

sortRight

และเมอตวช sortLeft ไดเลอนมาถงจดสวนทางกบตวช sortRight แลว ถอวาสนสดการดำาเนนการแลว จากนนยายตำาแหนงทายลสตฝงซายทเคยเปนตำาแหนงของ Pivot Key ซงกคอ 22 กลบไวตำาแหนงตามเดม และยายตำาแหนงของ Pivot Key กลบมายงตำาแหนงทถกตอง

Page 43: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4343วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

Move

62 21 14 45 22 87 74 85 76 97 84 78 sortRight

sortLeft และทายสดกจะไดลสตทถกแบงออกเปนสองสวนดวย

ตวแบง Pivot โดยลสตสวนแรกจะมคานอยกวา Pivot และลสตสวนทสองจะมคามากกวาหรอเทากบคา Pivot ซงถอวาแบงสวนสำาเรจแลวในรอบแรก

22 21 14 45 62 87 74 85 76 97 84 78 < pivot pivot >= pivot หลงจากทไดนำาตำาแหนง Pivot Key ไปไวในตำาแหนง

ทถกตองแลว ขนตอนตอไปกคอการใชเทคนคการเรยกตวเอง (Recursive ) ดวยการเรยกใชงานฟงกชน Quick Sort เพอจดการแบงสวนขอมลในรปแบบเดมและการจดเรยงขอมลจนเสรจสมบรณ ดงรปท 99.

Page 44: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4444วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 99. แสดงการแบงสวนขอมลการเรยงลำาดบขอมลแบบ

Quick Sort ซงใชเทคนค Recursive

78 21 14 97 87 62 74 85 76 45 84 22

62

22 21 14 45 87 74 85 76 97 84 78

22

14 21 45

4514

21

21

78

76 74

8774

76

76

87 97 84 87

84 85 97

9784

85

85

Page 45: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4545วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

อลกอรทมท 9.6 Quick Sort

Algorithm quicksort (list, left, right)An array, list, is sorted using recursion. Pre list is an array of data to be sorted left and right identify the first and last elements of the list, respectively Post list is sorted1 if ({right - left) > minSize) Quick sort 1 raedianLeft (list, left, right) 2 set pivot to left element 3 set sortLeft to left + l 4 set sortRight to right 5 loop (sortLeft <= sortRight) Find key on left that belongs on right 1 loop {sortLeft key < pivot key) l decrement sortRight 2 end loop Find key on right that belongs on left 3 loop (sortRight key >= pivot key) 1 decrement sortRight 4 end loop 5 if (sortLeft <«* sortRight) 1 exchange(list, sortLeft, sortRight) 2 increment sortLeft 3 decrement sortRight 6 end if 6 end loop Prepare for next pass 7 move sortLeft - 1 element to left element 8 move pivot element to sortLeft - 1 element 9 if (left < sortRight) 1 quicksort (list, left, sortRight -1) 10 end if 11 if (sortLeft < right) 1 quicksort (list, sortLeft, right) 12 end if2 else 1 insertionSort (list, left, right)3 end ifend quicksort

Page 46: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Merge Sort Merge Sort เปนการเรยงเปนการเรยงลำาดบขอมลแบบภายนอก หรอการเรยงลำาดบขอมลแบบลำาดบขอมลแบบภายนอก หรอการเรยงลำาดบขอมลแบบผสาน มกจะนำาไปใชงานกบขอมลทมปรมาณมากๆ กลาวคอผสาน มกจะนำาไปใชงานกบขอมลทมปรมาณมากๆ กลาวคอขอมลทงหมดนน ไมสามารถนำาไปประมวลผลทหนวยความขอมลทงหมดนน ไมสามารถนำาไปประมวลผลทหนวยความจำาหลกในคราวเดยว ดงนนจงตองจงตองมการนำาขอมลบางจำาหลกในคราวเดยว ดงนนจงตองจงตองมการนำาขอมลบางสวนไปประมวลผลในหนวยความจำาหลก ในขณะทขอมลสวนทสวนไปประมวลผลในหนวยความจำาหลก ในขณะทขอมลสวนทเหลอกจะถกจดเกบไวในหนวยความจำาสำารอง จากรปท เหลอกจะถกจดเกบไวในหนวยความจำาสำารอง จากรปท 9.9.

10 10แสดงถงการแบงไฟลขนาดใหญเพอนำาไปจดเรยงขอมลแสดงถงการแบงไฟลขนาดใหญเพอนำาไปจดเรยงขอมลแบบ แบบ Merge Sort Merge Sort หลงเสรจสนระยะการจดเรยงขอมล จะไดหลงเสรจสนระยะการจดเรยงขอมล จะไดไฟล ไฟล 2 2 ไฟลทผานการจดเรยงขอมลเพอนำาไปผสานรวมกนไฟลทผานการจดเรยงขอมลเพอนำาไปผสานรวมกน

4646วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Merge SortMerge Sort

Page 47: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4747วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 910 ระยะของการจดเรยงขอมลดวยวธการเรยงเรยงขอมลแบบ Merge Sort

2 ,300 recodes

1-500

Input file

Sort

1001-1500

2001-2300

Merge 1

501-1000

1501-2000

Merge 2

Page 48: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4848วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

การดำาเนนงานพนฐานของการเรยงลำาดบขอมลแบบ Merge Sort นน เปนกระบวนการนำาไฟลขอมลสองไฟลทจดเรยงแลวมารวมกนเพอจดเรยงขอมลตามคยทจดเรยง กลาวคอ เปนการอานขอมลจาก File-1 และ File-2 และนำามาผสานรวมกน ดวยการเกบเอาตพตไวท File-3 ซงดงรปท 910

1 2 3 4 5 6 8 10

File-1

1 3 5 4 5 6 8 10

File-2

File-3

รปท 910. แสดงการอานไฟลทงสองและนำามาผสานรวมกนเปนไฟลเดยว

Page 49: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

4949วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

อลกอรทมท 9.7 Merge Sort

Algorithm mergeFilesMerge two sorted files into one file, Pre input files are sorted Post input files sequentially combined in output file1 open files2 read (file1 into recordl)3 read (file2 into record2)4 loop (not end filel OR not end file2) 1 if (recordl key <= record2 key) 1 write (recordl to file3) 2 read (file into recordl} 3 if (end of file1) 1 set recordl key to infinity 4 end if 2 else 1 write (record2 to file3) 2 read (file2 into record2) 3 if (end of file2) 1 set record2 key to infinity 4 end if 3 end if5 end loop6 close filesend mergeFiles

Page 50: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

5050วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 911. แสดงการเรยงลำาดบขอมลแบบ Merge Sort

1 5 3 14 17 6 7 13

Ex. การเรยงขอมลแบบ Merge Sort โดยสมมตวามชดตวเลขทตองการนำาจดเรยงดงน {1, 5, 3, 14, 17, 6, 7, 13} Distribution Phase

1 5 3 14 17 6 7 13

1 5 3 14 17 6 7 13

1 5 3 14 17 6 7 13

1 5 3 14 6 17 7 13

1 3 5 14 6 7 13 17

1 3 5 6 7 13 14 17

Page 51: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

5151วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202

รปท 912. ตารางเปรยบเทยบประสทธภาพการเรยงลำาดบขอมลดวยวธตาง

วธการเรยงลำาดบขอมลSelection

SortInsertion SortBubble SortQuick Sort

Merge Sort

กรณดทสด (Best-case)

กรณเฉลย (Average-

case)กรณเลยรายทสด (Worst-case)O(n2)

O(n)O(n)

O(nlogn)O(nlogn)

O(n2)O(n2)O(n2)

O(nlogn)O(nlogn)

O(n2)O(n2)O(n2)O(n2)

O(nlogn)

จากตารางรปท 912. จะเปรยบเทยบประสทธภาพการจดเรยงขอมลดวยวธตางๆ ทงในกรณดทสด กรณเฉลย และกรณรายทสด

Page 52: บทที่ 9   การเรียงลำดับข้อมูล ( Sorting )

The End The End Lesson 9 Lesson 9

5252วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส 41222014122201