Merge sort
- 1. นาย ศีลวัฒน์ วิศวะโยธานันท์ Mc ปี2 No.5704022611175
นาย อนุรักษ์ สุดจอม MC ปี2 No.5704022611124
นาย เอกอังกุล ต่อพล Mc ปี2 No.5704022611183
นาย อริสรา จันทร์อาพร Mc ปี2 No.5704022630374
รายชื่อสมาชิก
- 2. Sorting คือ?
Sorting ในชีวิตประจาวันเราได้มีการจัดเรียงข้อมูลต่างๆ ซึ่งเราจะข้อมูลนั้นไปใช้ในการกระทาอย่าง
อื่น ในคอมพิวเตอร์ก็เช่นเดียวกัน ถ้าหากมีข้อมูลมาก ๆ แล้วไม่ทาการเรียงข้อมูล ก็จะทาให้เสียเวลาในการ
ค้นหาข้อมูลเป็นอย่างมาก เราจึงต้องมีการเรียงข้อมูลกันก่อนที่จะดึงข้อมูลมาใช้ เพื่อจะได้สะดวกในการเขียน
โปรแกรม การค้นหาข้อมูล และเสียเวลาน้อยลง การเรียงข้อมูลจะแบ่งเป็น 2 ลักษณะใหญ่ ๆ
- 3. การเรียงข้อมูลภายใน ( Internal sorting )
เป็นการเรียงลาดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจาหลัก เวลาที่ใช้ในการเรียงลาดับจะคานึงถึงเวลาที่ใช้ใน
การเปรียบเทียบและเลื่อนข้อมูลภายในความจาหลัก
การเรียงข้อมูลภายนอก ( External sorting )
เป็นการเรียงลาดับข้อมูลที่เก็บอยู่ในหน่วยความจาสารอง ซึ่งเป็นการเรียงลาดับข้อมูลในแฟ้มข้อมูล (file) เวลาที่
ใช้ในการเรียงลาดับต้องคานึงถึงเวลาที่เสียไประหว่างการถ่ายเทข้อมูลจากหน่วยความจาหลักและหน่วยความจาสารอง
นอกเหนือจากเวลาที่ใช้ในการเรียงลาดับข้อมูลแบบภายใน
การจัดเรียงลาดับแบ่งเป็น 2 ประเภทใหญ่ๆคือ
- 4. ชื่อใช้เรียก รูปแบบSorting เวลาการทางาน
เลือก Selection sort Θ(𝑛2
)
ฟอง Bubble sort O(𝑛2)
แทรก Insertion sort O(𝑛2)
เชลล์ Shell sort O(𝑛1.𝑥𝑥)
ฮีป Heap sort O(𝑛 log 𝑛)
ผสาน Merge sort O(𝑛 log 𝑛)
เร็ว Quick sort O(𝑛 log 𝑛) avg.
รูปแบบการเรียงแบบต่างๆ
ประเภทการจัดเรียง
Internal sorting
Internal sorting
Internal sorting
Internal sorting
External sorting
External sorting
Internal sorting
- 6. Merge Sort
+Merge Sort คือหนึ่งในวิธีการจัดเรียงแบบภายนอก(External Sorting)
+โดยการทางานจะทาแบบแยกข้อมูลออกมาย่อยๆ และรวมข้อมูลใหม่
+การทางานจะมีเวลาคงตัวไม่ว่าจะกรณีดีสุดหรือแย่สุด
- 7. รูปแบบการทางานของ Merge Sort
• หลักการทางานทั่วไป หรือการ Merge
1.ทาการแบ่งข้อมูลในlistหลักออกมาสองส่วนหรือถ้ามีข้อมูลสองส่วนอยู่แล้ว
2.เรียงข้อมูลในlistในสองส่วนนั้น
3.สร้างlistใหม่เพื่อเก็บlistย่อย
4.Merge list ย่อยโดยมีหลักการดังนี้ นาตัวน้อยสุดของทั้งสองlistมาเปรียบเทียบกันโดยถ้าlistใดมี
ค่าน้อยกว่าให้นาค่านั้นมาใส่ใน list ใหม่ และเลื่อนลาดับไปตัวที่มีค่าถัดไป
5.ถ้ามีlistใดที่ไม่สามารถเลื่อนได้แล้วหรือก็คือใช่ข้อมูลหมดแล้วให้นาข้อมูลอีกlistหนึ่งที่เหลืออยู่มาใส่ใน
listใหม่ได้เลย
- 8. 25 20 15 35 2 18 40
2 18 4025 20 15 35
ทาการแบ่ง
ข้อมูล
จัดเรียงข้อมูล
ภายใน
การดาเนินงานพื้นฐานของ Merge
15 20 25 35 2 18 40
ทาการเปรียบเทียบ
และใส่ในข้อมูลชุด
ใหม่
15 > 215 < 1820 > 1820 < 4025 < 4035 < 40
2 15 18 20 25 35 40
- 9. รูปแบบการทางานของ Merge Sort
• แบบโปรแกรม
-คือการทางานของโปรแกรม Merge Sort วิธีการทางาน โดยจะแบ่งเป็นสองช่วงคือ
+ การแบ่งข้อมูล (Distribution Phase)
+ จะทาการแบ่งข้อมูลออกเป็นสองส่วนย่อยๆไปเรื่อยจนกว่าจะแบ่งไม่ได้แล้วจึงหยุด
+ การผสานรวมข้อมูลย่อย(Merge Phase)
+ จะทาการนาข้อมูลย่อยมาจับคู่และ Merge กัน
+ จะทาการ Merge ไปเรื่อยจนข้อมูลย่อยทั้งหมดรวมกัน
+ นาข้อมูลที่ได้ใส่ใน list ใหม่
- 14. วิธีการทางาน Merge Sort
10 9 15 7 1 14 12
10 9 15 7 1 14 12
10 9 15 7 1 14 12
10 9 15 7 1 14 12
การแบ่งข้อมูล
ออกเป็นส่วนๆ
Distribution
Phase
- 23. เวลาทางานใน Merge Sort
ให้ T(n) คือจานวนครั้งของการเปรียบเทียบ
เพื่อเรียงลาดับข้อมูล n ตัว
T(n/2) + T(n/2) ‘เนื่องจากแบ่งมาสองตัว’
- 24. เวลาทางานใน Merge Sort
+ ถ้ามีสมาชิกตัวเดียวจะเห็นได้ชัดว่าเวลาที่ใช้นั้นคงที่ (ให้เป็น 1 ได้)
+ ถ้ามีสมาชิกหลายตัว เวลาทีใช้จะเท่ากับเวลาทางานของครึ่งซ้ายรวมกับครึ่งขวา และรวมกับเวลาที่ใช้รวมกับ Array
ทั้งสองอีกทีหนึ่ง[ซึ่งให้เป็น O(n)]
T(1) = 1
T(n) = 2T(n/2) + n
- 26. เวลาทางานใน Merge Sort
+ ขนาดข้อมูล n มีการลดลง 1 ครั้งเป็น
𝑛
2
+ ซึ่งในการลด K ครั้ง จะเหลือเป็น
𝑛
2 𝑘 ซึ่งจะเหลือเป็น 1 เมื่อ 2 𝑘 = 𝑛 หรือครั้งที่ 𝑘 = log 𝑛
- 28. เวลาทางานใน Merge Sort
+ จะได้ว่า 𝑇 𝑛 = 𝑛 + 𝑛 + 𝑛 + ⋯ + 𝑛 เป็นจานวนทั้งหมด log 𝑛
+ ดังนั้นเราจะประมาณได้ว่า 𝑇 𝑛 ∈ 𝑂 𝑛 log 𝑛 หรือมี 𝑐 ซึ่ง 𝑇 𝑛 ≤ 𝑐𝑛 log 𝑛
+ ถ้านาไปแทนกลับในสัมพันธ์ เวียนเกิดจะได้
𝑇 𝑛 = 2𝑇
𝑛
2
+ Θ(n)
≤
2𝑐𝑛
2
log
𝑛
2
+ Θ(n) = 𝑐𝑛 log 𝑛 − log 2 + Θ(n)
≤ 𝑐𝑛 log 𝑛 − 𝑐𝑛 + Θ(n) ∈ 𝑂(𝑛 log 𝑛)
- 30. +++ โปรแกรมCodeและการรัน Pythonds +++
http://interactivepython.org/runestone/static/pythonds/SortSearch/TheMergeSort.html
+++อ้างอิง+++
http://www.slideshare.net/nantananeungmctha/ss-38392265
http://www.cp.eng.chula.ac.th/~somchai/ULearn/DataStructures/Topics/pdf/sorting_2up.pdf
+++ ผู้เปิดโอกาศในการค้นหา+++
Google
Youtube