วันอังคารที่ 15 กันยายน พ.ศ. 2552

DTS10 - 15-09-52

สรุปเรื่อง Sorting
การเรียงลำดับ(Sorting)เป็นการจัดให้เป็นระเบียบมีแบบแผนช่วยในการค้นหาสิ่งของหรือข้อมูล ซึ่งจะสามารถกระทำได้รวดเร็วและมีประสิทธิภาพ เช่น การค้นหาความหมายของคำในพจนานุกรม การค้นหาหมายเลขโทร
ศัพท์ในสมุดโทรศัพท์ ซึ่งมีการเรียงลำดับตามชื่อและนามสกุลของเจ้าของโทรศัพท์ไว้ทำให้สามารถค้นหาหมายเลขโทรศัพท์ของคนที่ต้องการได้อย่างรวดเร็วเป็นต้น

การเรียงลำดับอย่างมีประสิทธิภาพ
ควรจะต้องคำนึงถึงสิ่งต่างๆดังต่อไปนี้
1.เวลาและแรงงานที่ต้องใช้ในการเขียนโปรแกรม
2.เวลาที่เครื่องคอมพิวเตอร์ต้องใช้ในการทำงานตามโปรแกรมที่เขียน
3.จำนวนเนื้อที่ในหน่วยความจำหลักมีเพียงพอหรือไม่

วิธีการเรียงลำดับ
1.การเรียงลำดับแบบภายใน(Internalsorting)เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลักเวลาที่ใช้ในการเรียงลำดับจะคำนึงถึงเวลาที่ใช้ในการเปรียบเทียบและเลื่อนข้อมูลภายในความจำหลัก
2.การเรียงลำดับแบบภายนอน(External sorting)เป็นการเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง ซึ่งเป็นการเรียงลำดับข้อมูลในแฟ้มข้อมูล(file)

การเรียงลำดับแบบ(Selection sort)ทำการเลือกข้อมูลมาเก็บในตำแหน่งที่ ข้อมูลนั้นควรจะอยู่ทีละตัว โดยทำการค้นหาข้อมูลนั้นในแต่ละรอบแบบเรียงลำดับถ้าเป็นการเรียงลำดับจากน้อยไปหามาก
1.ในรอบแรกจะทำการค้นหาข้อมูลตัวที่มีค่าน้อยที่สุดมาเก็บไว้ในตำแหน่งที่หนึ่ง
2.ในรอบที่สองนำข้อมูลตัวที่มีค่าน้อยรองลงมาไปเก็บไว้ที่ตำแหน่งที่สอง
3.ทำเช่นนี้ไปเรื่อยๆจนกระทั่งครบทุกค่าในที่สุดจะได้ข้อมูลเรียงลำดับจาดน้อยไปหามากตามที่ต้องการ

การเรียงลำดับแบบฟอง(Bubble Sort)
เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน

1.ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ต้องการให้สลับตำแหน่งที่อยู่กัน
2.ถ้าเป็นการเรียงลำดับจากน้อยไปหามากให้นำข้อมูลตัวที่มีค่าน้อยกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามากถ้าเป็นการเรียงจากมากไปหาน้อยให้นำข้อมูลตัวที่มีค่ามากกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่าน้อย

การเรียงลำดับแบบเร็ว(Quicksort)เป็นวิธีการเรียงลำดับที่ใช้เวลาน้อยเหมาะสำหรับข้อมูลที่มีจำนวนมากที่ต้องการความรวดเร็วในการทำงาน
กรณีที่ดีที่สุด คือ กรณีที่ค่าหลักที่เลือกแบ่งแล้วข้อมูลอยู่ตรงกลางกลุ่มพอดี และในแต่ละส่วนย่อยก็เช่นเดียวกันจำนวนครั้งของการเปรียบเทียบเป็นดังนี้
จำนวนครั้งของการเปรียบเทียบ
= n log2 n ครั้ง
กรณีแย่ที่สุด คือ กรณีที่ข้อมูลมีการเรียงลำดับอยู่แล้ว อาจจะเรียงจากน้อยไปหามากหรือจากมากไปหาน้อย หรือค่าหลักที่เลือกในแต่ละครั้งเป็นค่าหลักที่น้อยที่สุดหรือมากที่สุด จำนวนครั้งของการเปรียบเทียบจะมากที่สุดดังนี้
จำนวนครั้งของการเปรียบเทียบ

= (n-1)+( n-2)+….+3+2+1

=n(n-1)/2 ครั้ง

การเรียงลำดับแบบฐาน (Radix sort)
เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละหลัก

1.เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือข้อมูลเป็นเลขจำนวนเต็มจะพิจารณาหลักหน่อยก่อน
2.การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่มๆตามลำดับการเข้ามา
3.ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจากทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงข้อมูลจากกลุ่มที่มีค่าน้อยที่สุดก่อนแล้วเรียงไปเรื่อยๆจนหมดทุกกลุ่ม
4.ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่อยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบต่อไป ทำเช่นนี้ไปเรื่อยๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น