Sorting

Page 1

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

รูปแบบการจัดเรียงขอมูล หาตัวที่มีคานอยที่สุดในรายการนั่นคือ 1 สลับกับ ตัวแรกของขอมูลที่ยังไมเรียงนั่นคือ 5( 5 3 4 2 1 ) (1 3 4 2 5) หาตัวที่มีคานอยที่สุดนั่นคือ 2 สลับกับตัวแรกนั่น คือ 3(1 3 4 2 5) (1 2 4 3 5 ) หาตัวที่มีคานอยที่สุดนั่นคือ 3 สลับกับตัวแรกนั่น คือ 4(1 2 4 3 5)(1 2 3 4 5 ) หาตัวที่มีคานอยที่สุดนั่นคือ 4 สลับกับตัวแรกนั่น คือ 4(1 2 3 4 5)(1 2 3 4 5 ) เรียงเสร็จเรียบรอย(1 2 3 4 5 )

ประสิทธิภาพเมื่อเกิดกรณีแยที่สุด O(n^2) ประสิทธิภาพเมื่อเกิดกรณีดีที่สุด O(n^2) ประสิทธิภาพเมื่อเกิดกรณีทั่วไป O(n^2)


MERGE SORT การเรียงลําดับแบบผสมผสาน

เปนการเรียงลําดับที่อาศัยหลักการ Divide and Conquer โดยจะแบง ขอมูลออก เปน 2 สวน ซึ่งแตละสวนจะแบงยอยขอมูลเปนอีก 2 สวนเรื่อยไป จนกระทั่งไม สามารถแบงไดอีก แลวจึงเรียงลําดับขอมูลแตละสวนยอย จากนั้นนําขอมูลแตละ สวนยอยมารวม (Merge) เขาเปนขอมูลชุดเดียวกันพรอมทั้งเรียงลําดับขอมูล

รูปแบบการจัดเรียงขอมูล

ประสิทธิภาพเมื่อเกิดกรณีแยที่สุด O(n log n) ประสิทธิภาพเมื่อเกิดกรณีดีที่สุด{ O(n^{2})}

merge sort จะทําการแบงขอมูลออกเปนสวนๆกอน แลวคอยเรียงขอมูลในสวน ยอย จากนั้นนําเอาขอมูลสวนยอยที่เรียงไวแลวมารวมกันและเรียงไปในเวลา เดียวกัน อัลกอริทึมจะเรียงพรอมกับผสานขอมูลเขาดวยกันจนกระทั่งขอมูลทุก ตัวรวมกันกลายเปนขอมูลเดียวอีกครั้ง


การจัดเรียงอยางรวดเร็ว การเรียงลําดับแบบรวดเร็ว (Quick Sort) เปนวิธีการเรียง ลําดับแบบหนึ่งที่ทําไดดวยวิธี การแบงแยกและเอาชนะ (Divide and conquer)และมีลักษณะ การทํางานแบบเวียนเกิด โดยการ แบงขอมูลในกลุม กลุมหนึ่งออก เปนสองกลุมยอยที่แยกกัน ทํางานจากกันอยางอิสระ (Multi Thread)

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

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


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

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

วิธก ี ารจัดเรียงข้อมูลทีได้รบ ั มีประสิทธิภาพสูงสุดเปนอย่างไร สูตร o(n+k)

วิธก ี ารจัดเรียงข้อมูลทีได้รบ ั มีประสิทธิภาพตําสุดเปนอย่างไร ข้อมูลเข้า A[1..n], k ข้อมูลออก B[1..n] โดยที B[1] < B[2] < B[3] < . . . < B[n]


BUBBLE SORT รูปแบบการจัดเรียงขอมูลนั้นมีขั้นตอนวิธีอยางไร 1.ใชเปรียบเทียบขอมูลที่อยูติดกันทีละคู 2.ถาขอมูลที่เปรียบเทียบไมอยูในตําแหนงที่ตองการสลับที่กัน 3.ทิศทางการทํางานอาจจะทําจากคูซายไปหาขวา หรือคูขวาไปหาซาย 4.ในแตระรอบที่เปรียบเทียบ ขอมูลที่มีคามากจะถูกสลับไปตําแหนงทาย หรือขอมูลที่ มีคานอยจะถูกสลับไปยังตําแหนงตอนบน(จะเลือกเปรียบเทียบจากขวามาซาย หรือ ซายไปหาขวาก็ได) 5.ขอมูลที่มีคามากกวาสลับไปตอนทายของขอมูล

ผังงานแสดงขั้นตอนวิธีการจัดเรียงขอมูล 1.ใชเปรียบเทียบขอมูลที่อยูติดกันทีละคู 2.ถาขอมูลที่เปรียบเทียบไมอยูในตําแหนงที่ตองการสลับที่กัน 3.ทิศทางการทํางานอาจจะทําจากคูซายไปหาขวา หรือคูขวาไปหาซาย 4.ในแตระรอบที่เปรียบเทียบ ขอมูลที่มีคามากจะถูกสลับไปตําแหนงทาย หรือ ขอมูลที่มีคานอยจะถูกสลับไปยังตําแหนงตอนบน(จะเลือกเปรียบเทียบจากขวา มาซาย หรือซายไปหาขวาก็ได) 5.ขอมูลที่มีคามากกวาสลับไปตอนทายของขอมูล

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

วิธีการจัดเรียงขอมูลที่ไดรับมีประสิทธิภาพตํ่าสุดเปนอยางไร รณีที่แยที่สุด เปนกรณีที่ตองใชจํานวนครั้งในการเปรียบเทียบมากที่สุดนั้นคือ ถาไฟลมีขนาด n ตองใชจํานวนครั้งในการเปรียบเทียบมากที่สุดคือ จํานวน n-1 ครั้ง รวมเวลาที่ใชและในแตละรอบจะมีจํานวนครั้งในการเปรียบเทียบ


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

ผังงานแสดงขันตอนวิธีการจัดเรียงข้อมูล

วิธีการจัดเรียงข้อมูลทีได้รับมีประสิทธิภาพสูงสุดเปนอย่างไร เมือ A เปนข้อมูลเข้า n ทีแต่ละค่ามีจํานวนตัวเลขสูงสุด d ตัว และ d เปนตําแหน่งสุดท้าย (most-significant digit) ของตัวเลขใน A

วิธีการจัดเรียงข้อมูลทีได้รับมีประสิทธิภาพตําสุดเปนอย่างไร เมือ A เปนข้อมูลเข้า n ทีแต่ละค่ามีจํานวนตัวเลขสูงสุด d ตัว และ d เปนตําแหน่งสุดท้าย (most-significant digit) ของ ตัวเลขใน A


Insertion Sort รูปแบบการจัดเรียงข้อมูล หลักการจัดเรียงเหมือนกับการ เรียงไพ่ในมือ โดยจะรับไพ่มาทีละ ใบ เมือรับไพ่มาแล้วจะหาว่าไพ่ใบ นันควรจะแทรกลงไปทีช่องไหนใน กองไพ่ทีอยู่ในมือดี สมมุติฐานคือ ไพ่ในมือจะต้องจัดเรียงไว้อยู่แล้ว อาจจะเรียงจากน้อยไปมาก หรือ จากมากไปน้อยก็ได้ เมือรับไพ่มา จนครบทุกใบ ไพ่ทังหมดทีอยู่ในมือ จะจัดเรียงกันอย่างถูกต้อง

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


RANDOM QUICK

______

SORT รูปแบบการจัดเรียงข้อมูล

มันจะสุ่มข้อมูลมาตัวหนึงแล้วเอาไว้ตัวแรกจากนันจะเอาไป อ้างอิง(เทียบ)กับข้อมูลทังหมดทีเราใส่เพือตรวจสอบ พอตรวจสอบ เสร็จเราจะได้ชุดข้อมูลทีเทียบกับตัวทีมันเทียบแล้วน้อยกว่า จากนัน มันก็จะสลับตัวทีเราเทียบกับตําแหน่งสุดท้ายของข้อมูลชุดทีเทียบ แล้วน้อยกว่า***กรณีเรียงข้อมูลจากน้อยไปมาก****

ผังแสดงขันตอนวิธีการจัดเรียงข้อมูล

ผังแสดงขันตอนวิธีการจัดเรียงข้อมูล ข้อมูลถูกจัดเรียงลําดับ เรียบร้อยแล้ว กรณีแต่ละรอบ จะมีการเปรียบเทียบคีย์เพียง ครังเดียว เพราะฉะนันจํานวน การเปรียบเทียบคือ O(n Log n)

วิธีการจัดเรียงข้อมูลทีได้รับมีประสิทธิภาพตําสุด ข้อมูลถูกจัดเรียงลําดับเรียบร้อยแล้ว กรณีแต่ละรอบจะมี การเปรียบเทียบคีย์เพียงครังเดียว เพราะฉะนันจํานวน การเปรียบเทียบคือ O(n Log n)


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