การเรียงลำดับโดยวิธีการพิเศษ (Counting sort)

Page 1

g n g i t n i n t u C oun Co t

S orrt So

การเรียงลําดับโดยวิธีการพิเศษ

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

ขัน ้ ตอนการจัดเรียงขอมูล

1.สังเกตเปรียบขอมูลโดยดูจากขอมูลที่ซ้าํ กัน กอนวามีทงั ้ หมดกี่แบบ 2.นับจํานวนขอมูลวามีจํานวนขอมูลที่ซ้าํ กัน ทัง้ หมดกี่ตัว 3.นํ าขอมูลที่รวบรวมไดมาเรียงขอมูลตาม ลําดับโดยเรียงจากคาน อยไปหามาก

วิธีการจัดเรียงขอมูลที่ไดรับมีประสิทธิภาพสูงสุด เขียนขัน ้ ตอนที่คํานวณวา สําหรับแตละคาของ x มีขอมูลอยูกี่ตัวที่ น อยกวาหรือเทากับ x ถาทราบวามีขอมูล 5 ตัวซึ่งน อยกวา x แลวจะไดวา x ตองอยูตําแหนงที่ 6 โดยอัตโนมัติ ซึ่งการคํานวณนี้จะไมใชเวลาที่มากนัก ขัน ้ ตอนวิธี COUNTING-SORT(A, B, k) เมื่อ A เป็ นขอมูลเขา n, B เป็ นขอมูล ที่จัดเรียงและ k เป็ นจํานวนเต็มที่ใหญที่สุดใน A สูตร o(n+k)

วิธีการจัดเรียงขอมูลที่ไดรับมีประสิทธิภาพตํ่าสุด จะตองใชเวลามากเมื่อเราใชหาตัวเลขที่อยูติด ๆ กันและมี จํานวนมาก เชน การหาจํานวนเลขที่มีเป็ นรอยตัวจะใชเวลานาน COUNTING-SORT(A, B, k) เมื่อ A เป็ นขอมูลเขา n, B เป็ นขอมูล ที่จัดเรียงและ k เป็ นจํานวนเต็มที่ใหญที่สุดใน A ขอมูลเขา A[1..n], k ขอมูลออก B[1..n] โดยที่ B[1] < B[2] < B[3] < . . . < B[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.