บทที่ 9 การเรียงลำดับข้อมูล ( sorting )
Post on 13-Mar-2016
29 Views
Preview:
DESCRIPTION
TRANSCRIPT
บทท บทท 9 9 การเรยงการเรยงลำาดบขอมล ลำาดบขอมล ((SortingSorting))
By Juthawut By Juthawut ChantharamaleeChantharamalee 11วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
เปนการเรยงลำาดบขอมลภายในหนวยความจำาหลก เปนการเรยงลำาดบขอมลภายในหนวยความจำาหลก ((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)
เปนการเรยงลำาดบขอมลภายในหนวยความเปนการเรยงลำาดบขอมลภายในหนวยความจำาหลก เฉพาะสวนขอมลทตองการจดการเรยงในจำาหลก เฉพาะสวนขอมลทตองการจดการเรยงในขณะนน กลาวคอ ขอมลทงหมดทตองการจดเรยงจะขณะนน กลาวคอ ขอมลทงหมดทตองการจดเรยงจะไมสามารถนำาไปใสไวในหนวยความจำาหลกพรอมกนไมสามารถนำาไปใสไวในหนวยความจำาหลกพรอมกนเพอประมวลผลไดทงหมดในคราวเดยวกน เนองจากเพอประมวลผลไดทงหมดในคราวเดยวกน เนองจากมปรมาณขอมลมาก ดงนนจงตองกนขอมลบางสวนมปรมาณขอมลมาก ดงนนจงตองกนขอมลบางสวนไปเกบไวในสอจดเกบขอมลสำารอง ไปเกบไวในสอจดเกบขอมลสำารอง ((Secondary Secondary StorageStorage ) ) เชน ฮารดดสก หรอเทป สำาหรบเรยงเชน ฮารดดสก หรอเทป สำาหรบเรยงลำาดบขอมลแบบภายนอกนเหมาะสมกบการเรยงลำาดบขอมลแบบภายนอกนเหมาะสมกบการเรยงลำาดบขอมลในปรมาณมากลำาดบขอมลในปรมาณมาก
33วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
การเรยงลำาดบขอมลแบบภายนอก การเรยงลำาดบขอมลแบบภายนอก (External Sorting) (External Sorting)
Selection Heap Insertion Heap Bubble Quick
44วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
รปท 91. ประเภทของการเรยงลำาดบขอมล
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)
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 วธการเรยงวธการเรยงลำาดบแบบผสานลำาดบแบบผสาน
ขอมลสามารถทจะทำาการจดเรยงจากนอยไปขอมลสามารถทจะทำาการจดเรยงจากนอยไปมาก มาก ((AscendingAscending)) หรอลำาดบจากมากไปนอย หรอลำาดบจากมากไปนอย ((DescendingDescending)) กได ซงลำาดบการเรยงจะขนกได ซงลำาดบการเรยงจะขนอยกบคณสมบตของขอมลทจะนำาไปจดเรยง อยกบคณสมบตของขอมลทจะนำาไปจดเรยง ตวอยางขอมลทเหมาะกบการจดเรยงจากนอยตวอยางขอมลทเหมาะกบการจดเรยงจากนอยไปมาก เชน สมดโทรศพท พจนานกรม สำาหรบไปมาก เชน สมดโทรศพท พจนานกรม สำาหรบการจดเรยงจากมากไปหานอย เชน เกรดเฉลยการจดเรยงจากมากไปหานอย เชน เกรดเฉลยสะสมของนกศกษา หรอคะแนนของผเลนเกมส สะสมของนกศกษา หรอคะแนนของผเลนเกมส ซงมกจะเปนสถตจากลำาดบสงลงมาตำา เปนตนซงมกจะเปนสถตจากลำาดบสงลงมาตำา เปนตน
77วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
ลำาดบการจดเรยง ลำาดบการจดเรยง (Sort Order) (Sort Order)
ประสทธภาพของการเรยงลำาดบขอมล คอ การประสทธภาพของการเรยงลำาดบขอมล คอ การวดผลประสทธภาพเชงสมพนธของการเรยงลำาดบวดผลประสทธภาพเชงสมพนธของการเรยงลำาดบขอมล ซงโดยปกตแลว ไดมการประมาณคาจากการขอมล ซงโดยปกตแลว ไดมการประมาณคาจากการเปรยบเทยบ และการเคลอนยายลำาดบเพอจดเรยงเปรยบเทยบ และการเคลอนยายลำาดบเพอจดเรยงภายในลสตทไมไดเรยงลำาดบขอมลไว โดยในทนจะภายในลสตทไมไดเรยงลำาดบขอมลไว โดยในทนจะกลาวถงการวดประสทธภาพของการเรยงลำาดบกลาวถงการวดประสทธภาพของการเรยงลำาดบขอมลแบบภายในเทานน ซงประสทธภาพของการขอมลแบบภายในเทานน ซงประสทธภาพของการเรยงลำาดบขอมลของแตละอลกอรทมจะใชแทนเรยงลำาดบขอมลของแตละอลกอรทมจะใชแทนสญลกษณบกโอ เชน ปประสทธภาพการจกเรยงสญลกษณบกโอ เชน ปประสทธภาพการจกเรยงขอมล ขอมล O(n) O(n) ยอมดกวา ยอมดกวา O(n2)O(n2)
88วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
ประสทธภาพของการเรยงลำาดบประสทธภาพของการเรยงลำาดบขอมล ขอมล (Sort Efficiency) (Sort Efficiency)
การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Selection Sort Selection Sort หรอการหรอการเรยงลำาดบขอมลแบบเลอกเรยงลำาดบขอมลแบบเลอก ถอวาเปนวธการเรยงลำาดบถอวาเปนวธการเรยงลำาดบขอมลทเรยบงาย ตรงไปตรงมาวธหนง การทำางานในขอมลทเรยบงาย ตรงไปตรงมาวธหนง การทำางานในแตละรอบของวธน จะทำาการคนหาหรอสแกนคาคนหาตงแตละรอบของวธน จะทำาการคนหาหรอสแกนคาคนหาตงแตแรกจนถงตวสดทาย หลงจากทไดพบตำาแหนงของแตแรกจนถงตวสดทาย หลงจากทไดพบตำาแหนงของคาทนอยทสดแลวกจะทำาการสลบตำาแหนงกน จากนนในคาทนอยทสดแลวกจะทำาการสลบตำาแหนงกน จากนนในรอบตอไป กจะขยบตำาแหนงไปยงตวถดไป โดยจะทำาเชนนรอบตอไป กจะขยบตำาแหนงไปยงตวถดไป โดยจะทำาเชนนไปเรอยๆ จนครบทกตว กจะไดชดขอมลทจดเรยงไปเรอยๆ จนครบทกตว กจะไดชดขอมลทจดเรยงเรยบรอยสมบรณเรยบรอยสมบรณ
99วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
วธการเรยงวธการเรยงลำาดบขอมล ลำาดบขอมล การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Selection SortSelection Sort
Sorted Unsorted
1010วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
รปท 92 หลกการเรยงลำาดบขอมลแบบ Selection Sort
… Minimum ( a[k] … a[last])0 j k Last
Wall
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
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
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
1414วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
ขนตอนท 5 : สำาหรบรอบน จกเปนรอบสดทาย เนองจากภายในลสตเหลอเพยงขอมลสองตวสดทายคอ 78 และ 56 ปรากฏวาคา 56 นอยกวา จงทำาการสลบตำาแหนงกน หลงจากนน กคงเหลอไวแตเพยงขอมลทไดจดเรยงไวอยางสมบรณ
8 23 32 45 56 78
Sorted8 23 32 45 78 56
Sorted Unsorted
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
การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Heap Sort Heap Sort จะจะเรมตนทำางานจากอารเรยทมจดการเรยงลำาดบเรมตนทำางานจากอารเรยทมจดการเรยงลำาดบขอมลแบบฮพ ซงคณสมบตสำาคญของฮพทรกขอมลแบบฮพ ซงคณสมบตสำาคญของฮพทรกคอ รทโหนดจะมคามากทสด และในการแทนคอ รทโหนดจะมคามากทสด และในการแทนฮพในอารเรย คาทมากทสดจะอยทตำาแหนงฮพในอารเรย คาทมากทสดจะอยทตำาแหนงแรกสลบกบคาสดทายของฮพ และจะดำาเนนแรกสลบกบคาสดทายของฮพ และจะดำาเนนการเชนนไปจนกระทงไดจดการกบขอมลทงการเชนนไปจนกระทงไดจดการกบขอมลทงหมดในฮพกจะไดขอมลทจดเรยงเรยบรอยหมดในฮพกจะไดขอมลทจดเรยงเรยบรอยอยางสมบรณอยางสมบรณ
1616วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส 41222024122202
การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Heap SortHeap Sort
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) การแทนฮพทรในอารเรย
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
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
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
การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ insertion Sort insertion Sort หรอการเรยงลำาดบขอมลแบบแทรก จดเปนวธหรอการเรยงลำาดบขอมลแบบแทรก จดเปนวธการเรยงลำาดบขอมลทไมซบซอนเชนกน วธนการเรยงลำาดบขอมลทไมซบซอนเชนกน วธนเปนพนฐานทางเทคนคทนำาไปใชในการเรยงไฟเปนพนฐานทางเทคนคทนำาไปใชในการเรยงไฟดวยมอ โดยผเลนจะทำาการจดเรยงไฟดวยการดวยมอ โดยผเลนจะทำาการจดเรยงไฟดวยการดงไฟทตองการออกมาแทรกในตำาแหนงทเหมาะดงไฟทตองการออกมาแทรกในตำาแหนงทเหมาะสมในชวงลำาดบการเรยงมนขณะนน โดยสมในชวงลำาดบการเรยงมนขณะนน โดยพจารณาจากรปท พจารณาจากรปท 96 96 ซงเปนภาพแสดงซงเปนภาพแสดงหลกการเรยงลำาดบขอมลแบบ หลกการเรยงลำาดบขอมลแบบ Insertion Insertion SortSort 2121วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส
41222024122202
การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Insertion SortInsertion Sort
Sorted Unsorted
2222วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
รปท 96. หลกการเรยงลำาดบขอมลแบบ Insertion Sort
… … 0 j k Last
Wall
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
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
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
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
2727วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
ขนตอนท 5: รอบนจดเปนรอบสดทาย โดยขณะนเหลอเพยงขอมลตำาแหนงสดทายเพยงตวเดยวทจะตองนำาไปเปรยบเทยบเพอจดเรยง ผลปรากฏวา คาตวเลข 56 จะถกนำาไปแทรกไวในตำาแหนงท 5 หลงจากนนจะไดชดตวเลขทผานการจดเรยงแลวอยางสมบรณ
8 23 32 45 78 56
Sort 8 23 32 45 56 78
Sort
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
การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Bubble Sort Bubble Sort เปนการเปนการเรยงลำาดบขอมลดวยการเปรยบเทยบขอมลเปนคทเรยงลำาดบขอมลดวยการเปรยบเทยบขอมลเปนคทอยตดกนในแตละรอบการทำางาน เพอสลบตำาแหนงอยตดกนในแตละรอบการทำางาน เพอสลบตำาแหนงกนหากขอมลอยผดลำาดบ โดยหากเปนการจดเรยงกนหากขอมลอยผดลำาดบ โดยหากเปนการจดเรยงลำาดบขอมลจากนอยไปมาก การทำางานจะเรมจากลำาดบขอมลจากนอยไปมาก การทำางานจะเรมจากขอมลตวสดทายภายในลสต และทำาการเปรยบเทยบขอมลตวสดทายภายในลสต และทำาการเปรยบเทยบกบคาถดไปทอยขางหนาทอยตดกน โดยหากตวเลขทกบคาถดไปทอยขางหนาทอยตดกน โดยหากตวเลขทอยทายมคานอยกวา กจะทำาการสลบตำาแหนง อยทายมคานอยกวา กจะทำาการสลบตำาแหนง ((SwapSwap ) ) กบตวกอนหนาเพอขยบลอยเหนอขนไปกบตวกอนหนาเพอขยบลอยเหนอขนไปเรอยๆ จนกวาขอมลในลสตจะถกจดเรยงทงหมดเรอยๆ จนกวาขอมลในลสตจะถกจดเรยงทงหมด
2929วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส 41222024122202
การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Bubble SortBubble Sort
Sorted Unsorted
3030วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
รปท 97 หลกการเรยงลำาดบขอมลแบบ Bubble Sort
… … 0 j k Last
Wall
Bubble up
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
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
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
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
การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Quick Sort Quick Sort เปนการเปนการเรยงลำาดบขอมลดวยการใชหลกการแบงสวน เรยงลำาดบขอมลดวยการใชหลกการแบงสวน ((PartitionPartition ) ) ขอมลเปนหลก แตละรอบของการขอมลเปนหลก แตละรอบของการทำางานจะมการเลอกอลเมนตตวหนงทเรยกวา ทำางานจะมการเลอกอลเมนตตวหนงทเรยกวา PivotPivot ทใชสำาหรบเปนตวแบงแยกสวนขอมล ซงทใชสำาหรบเปนตวแบงแยกสวนขอมล ซงแตละสวนนนอาจจะมจำานวน อลเมนตทไมเทาแตละสวนนนอาจจะมจำานวน อลเมนตทไมเทากนกได โดยการแบงสวนภายในลสต จะแบงออกเปน กนกได โดยการแบงสวนภายในลสต จะแบงออกเปน
3 3 สวนดวยกน ซงมประสทธภาพมากกวา เพราะมสวนดวยกน ซงมประสทธภาพมากกวา เพราะมจำานวนการสลบตำาแหนงจะนอยกวาการจดเรยงจำานวนการสลบตำาแหนงจะนอยกวาการจดเรยงลำาดบแบบ ลำาดบแบบ Bubble SortBubble Sort
3535วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Quick SortQuick Sort
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
สำาหรบอลกอรทมตนแบบของการเรยงลำาดบขอมลสำาหรบอลกอรทมตนแบบของการเรยงลำาดบขอมลแบบ แบบ 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
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
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
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 ไปยงตำาแหนงแรกเพอถอครองไวกอน จนกระทงไดจดเรยงและแบงลสตไดแลว จงคอยดำาเนนการยายกลบมาในตำาแหนงทถกตองตอไป
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
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 กลบมายงตำาแหนงทถกตอง
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.
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
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
การเรยงลำาดบขอมลแบบ การเรยงลำาดบขอมลแบบ Merge Sort Merge Sort เปนการเรยงเปนการเรยงลำาดบขอมลแบบภายนอก หรอการเรยงลำาดบขอมลแบบลำาดบขอมลแบบภายนอก หรอการเรยงลำาดบขอมลแบบผสาน มกจะนำาไปใชงานกบขอมลทมปรมาณมากๆ กลาวคอผสาน มกจะนำาไปใชงานกบขอมลทมปรมาณมากๆ กลาวคอขอมลทงหมดนน ไมสามารถนำาไปประมวลผลทหนวยความขอมลทงหมดนน ไมสามารถนำาไปประมวลผลทหนวยความจำาหลกในคราวเดยว ดงนนจงตองจงตองมการนำาขอมลบางจำาหลกในคราวเดยว ดงนนจงตองจงตองมการนำาขอมลบางสวนไปประมวลผลในหนวยความจำาหลก ในขณะทขอมลสวนทสวนไปประมวลผลในหนวยความจำาหลก ในขณะทขอมลสวนทเหลอกจะถกจดเกบไวในหนวยความจำาสำารอง จากรปท เหลอกจะถกจดเกบไวในหนวยความจำาสำารอง จากรปท 9.9.
10 10แสดงถงการแบงไฟลขนาดใหญเพอนำาไปจดเรยงขอมลแสดงถงการแบงไฟลขนาดใหญเพอนำาไปจดเรยงขอมลแบบ แบบ Merge Sort Merge Sort หลงเสรจสนระยะการจดเรยงขอมล จะไดหลงเสรจสนระยะการจดเรยงขอมล จะไดไฟล ไฟล 2 2 ไฟลทผานการจดเรยงขอมลเพอนำาไปผสานรวมกนไฟลทผานการจดเรยงขอมลเพอนำาไปผสานรวมกน
4646วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหส รหส 41222024122202
การเรยงลำาดบขอมลการเรยงลำาดบขอมลแบบ แบบ Merge SortMerge Sort
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
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. แสดงการอานไฟลทงสองและนำามาผสานรวมกนเปนไฟลเดยว
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
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
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. จะเปรยบเทยบประสทธภาพการจดเรยงขอมลดวยวธตางๆ ทงในกรณดทสด กรณเฉลย และกรณรายทสด
The End The End Lesson 9 Lesson 9
5252วชาโครงสรางขอมล วชาโครงสรางขอมล ((Data Structure) Data Structure) รหสรหส 41222014122201
top related