การจัดเรียงข้อมูลอย่างรวดเร็ว (Quick sort)

Page 1

SORT ขัน ้ ตอนวิธี เลือก Pivot โดยใชวิธี Median-of-Threee คือ เลือกเลขตัวที่ 1 ตัวสุดทาย และตัวตรงกลาง ขึ้นมา และหาคา Median ของเลข 3 ตัวนี้

กําหนดตัวแปรจํานวนเต็ม 2 ตัวคือ i กับ j โดย i ใชสแกนหาเลขที่มากกวา 6 เพื่อสลับไปดานขวา สวน j ใชสแกนหาเลข ที่นอยกวา 6 เพื่อสลับกลับมาดานซาย เมื่อไรก็ตามที่ i > j คือ i สแกนไปดานขวาจนกระทัง่ เลยตําแหนงของ j ออกไป จะถือวาหยุดได และจะมีเลขที่นอยกวา 6 อยูดานซายทัง้ หมด และมีเลขที่มากกวา 6 อยูดานขวาทัง้ หมด

ใหสลับคา Pivot กับตําแหนงที่ i จะทําให ไดกลุมที่สมบูรณที่มี Pivot เป็ นตัวคัน ่ กลางพอดี เมื่อมาถึงจุดนี้ จะเสร็จสิน ้ การ แบงกลุมรอบที่ 1 โดยมี 6 เป็ นตัว Pivot ใหทําซํ้าแบบนี้ไปเรื่อย ๆ จนกวาการจัด เรียงจะเสร็จสิน ้

วิธีการจัดเรียงขอมูลที่ไดรับมีประสิทธิภาพสูงสุด ขอมูลที่นํามาเรียงลําดับ ไมมีการเรียงลําดับอยูกอนเลย ทําใหในเเตละรอบของการเเบง สวน มี ขอมูลหลักอยูตรงกลางของขอมูลนัน ้ ๆ เสมอ ในกรณีนี้ใชเวลาประมาณ O(n log n) คือ ความเร็ว ปานกลาง อธิบายงาย ๆ จะเป็ นการวนลูปสองรอบ ลูปชัน ้ นอกวนแบบปกติ (n รอบ) แตลูปชัน ้ ใน วนแบบตัดขอมูลที่ไมเกี่ยวของออกไปทีละครึ่งดวย (log n) จึงกลายเป็ น O(n log n) วิธีการจัดเรียงขอมูลที่ไดรับมีประสิทธิภาพตํ่าสุด เป็ นกรณีที่ขอมูลจะนํ ามาเรียงลําดับ มีการเรียงลําดับอยูกอนแลวซึ่งอาจเรียงจากมากไป น อยหรือจากน อยไปมาก ในกรณีการแบงสวนแตละครัง้ จะไดขอมูลที่ถูกแบงเพียงสวน เดียว เนื่องจากขอมูลที่ใชในการเปรียบเทียบอยูตําแหนงปลายสุดของกลุมพอดี

ผ ริ ต า สั ง เ ก ต กิ จ ม . 4 / 4 เ ล ข ที

12


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.