การเรียงลำดับข้อมูล (Sorting) หัวข้อ การเรียงลำดับแบบต่าง ๆ เลือก, ฟอง

Download Report

Transcript การเรียงลำดับข้อมูล (Sorting) หัวข้อ การเรียงลำดับแบบต่าง ๆ เลือก, ฟอง

การเรี ยงลาดับข้อมูล
(Sorting)
หัวข้อ
• การเรี ยงลาดับแบบต่าง ๆ
– เลือก, ฟอง, แทรก, เชลล์, ผสาน, เร็ว
• ประสิทธิภาพการเรี ยงลาดับ
– เวลาการทางาน
– ปริมาณหน่วยความจา
• การเปรี ยบเทียบการเรี ยงลาดับแบบต่าง ๆ
การเรี ยงลาดับ (Sorting)
วิธีการเรี ยงลาดับ
•
•
•
•
•
•
•
เลือก : Selection sort Θ(n2)
ฟอง : Bubble sort O(n2)
แทรก : Insertion sort O(n2)
เชลล์ : Shell sort O(n1.xx)
ฮีป : Heap sort O(n log n)
ผสาน : Merge sort O(n log n)
เร็ว : Quick sort O(n log n) avg.
อาศัยการนาข้ อมูลมาเปรี ยบเทียบกันทีละคู่
lessThan, swap
การเรี ยงลาดับแบบเลือก (Selection Sort)
•
•
•
•
•
เรี ยงลาดับข้ อมูล d[0] ถึง d[k]
หาตัวมากสุด
สลับตัวมากสุดกับตัวท้ ายของกลุม่
ขนาดของกลุม่ ลดลงหนึง่
ไปเรี ยงลาดับ d[0] ถึง d[k-1]
• ...
• ทาจนข้ อมูลของกลุม่ เหลือตัวเดียว
การเรี ยงลาดับแบบเลือก : โปรแกรม
การเรี ยงลาดับแบบฟอง (Bubble Sort)
• เรี ยงลาดับข้ อมูล d[0] ถึง d[k]
• เปรี ยบเทียบคูท่ ี่ติดกัน จาก 0 ถึง k
– สลับกันถ้ ากลับลาดับ
• ขนาดของกลุม่ ลดลงหนึง่
• ไปเรี ยงลาดับ d[0] ถึง d[k-1]
• ...
• ทาจนข้ อมูลของกลุม่ เหลือตัวเดียว
การเรี ยงลาดับแบบฟอง : โปรแกรม
การเรี ยงลาดับแบบแทรก (Insertion Sort)
การเรี ยงลาดับแบบแทรก : โปรแกรม
การเรี ยงลาดับแบบเชลล์ : แนวคิด
• การเรี ยงลาดับแบบแทรก
– ช้ า เพราะเลื่อนข้ อมูลไปช่องถัดไป ทีละตาแหน่ง
• การเรี ยงลาดับแบบเชลล์
– แบ่งข้ อมูลเป็ น h ชุด แบบตัวเว้ น h – 1 ตัว
– sort แต่ละชุดด้ วยการเรี ยงลาดับแบบแทรก
– ถ้ า h == 1 ก็เสร็จ ไม่เช่นนัน้ ลดค่า h ลง กลับไปข้ อ 1
• หมายเหตุ
– รอบสุดท้ ายเป็ นการเรี ยงลาดับแบบแทรกชุดเดียว
เปรี ยบเทียบเวลาการเรี ยงลาดับ
เปรี ยบเทียบเวลาการเรี ยงลาดับ
เปรี ยบเทียบเวลาการเรี ยงลาดับ
การเรี ยงลาดับแบบผสาน (Merge Sort)
การเรี ยงลาดับแบบผสาน : โปรแกรม
การเรี ยงลาดับแบบเร็ ว (Quick Sort)