Computational Thinking ,Decomposition and Sorting

Page 1



นางสาวธนาภา เจริญสุ ข ชันม.4/4 เลขที 10ข

M E R G EการเรีS O R T ยงลําดับแบบผสาน ั เรียงข้ อมูล ี ารจด ผังแสดงขั นตอนวิธก

ประสิทธิภาพการทํางานของ การเรียงลําดับแบบ Merge ประสิทธิภาพการทํางานเมือเกิดกรณีแย่สุด O(n log n) ประสิทธิภาพการทํางานเมือเกิดกรณีทัวไป O(n log n) ประสิทธิภาพการทํางานเมือเกิดกรณีดีทีสุด O(n log n) โดยทัวไป หรือ O(n) เมือใส่เงือนไขพิเศษ

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

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

ึ แบบแบ่งแยกและเอาชนะ (divide and conquer Merge sort เปนอัลกอริทม algorithm) ก็คือมีการแบ่งแยก โดยแบ่งข้อมูลออกเปนสองส่ วนจากนั นให้ recursive เรียกตัวเอง ต่อมาเอาชนะเปนการเอาแต่ละส่ วนมาพิจารณารวมกัน ี ยงลําดับเรียบร้อยแล้ว โดยส่ วนทีเอามาพิจารณาต้อง จนได้เปนส่ วนใหญ่ทเรี ึ ้ มูลอยู่ n ตัว เวลาการทํางานก็จะเปน T(n) ซง เรียงลําดับแล้วด้วย สมมติวา่ มีขอ การคํานวณหาเวลาก็หาได้จาก master’s method คือ T(n) = 2T(n/2) + n


SELECTION SELECTION SORT SORT

เริมจาก เลือกค่าของข้อมูลทีมีค่าน้อยทีสุ ด นํามาแลกเปลียกับค่าในตําแหน่งแรกสุ ดของกลุ่ม หลังจากนันกระทําตามหลักการทัง 2 กับข้อมูลทีเหลือ คือ ครังที 2 ค่า A(2) จะถูกแลกกับค่าทีเหลือแล้วว่าน้อยทีสุ ดในลิสต์ A(2)....A(n) และครังที 3 ค่า A(3) จะถูกแลกกับค่าทีเลือกแล้วว่าน้อยทีสุ ด ในลิตส์ A(3)....A(n) และเรียงไปจนกระทังเลือข้อมูลทีถูกเปรียบเทียบแค่ 2 ค่า คือ A(n-1) และ A(n) ดังนันจํานวนรอบในากรกระทําเปน n-1 รอบ

นางสาวธนาภา เจริญสุข ชัน ม.4/4 เลขที 10ข


QUICK SORT การจัดเรียงแบบเร็ว (Quick Sort) ใช้หลักการ divide-and-conquer อาศัยการจัดแบ่งข้อมูล ทังหมดออกเปน 2 กลุ่ม โดยกลุ่มแรกจะเปนกลุ่มของข้อมูลทีมีค่าน้อยกว่าค่ากลางทีกําหนด และ ส่วนทีสองเปนกลุ่มของข้อมูลทีมีค่ามากกว่าค่ากลางทีกําหนด หลังจากนันแบ่งข้อมูลแต่ละส่วน ออกเปน 2 ส่วนเช่นเดิม แบ่งไปเรือยๆจนไม่สามารถแบ่งได้ก็จะได้ขอ ้ มูลทีเรียงกัน

ประสิทธิภาพเมือเกิดกรณีแย่ทีสุด ต้องใช้เวลาประมาณ O(n^2) ประสิทธิภาพเมือเกิดกรณีดท ี ีสุด ใน กรณีนใช้ ี เวลาประมาณ O(n log n)

หยิบค่าขึนมาหนึงค่า เรียกว่า pivot โดยจะเรียงจาก ค่าแรก ค่า median (n+1)/2 และค่าท้ายสุด นําข้อมูลตัวถัดไปมาเปรีบยเทียบกับ pivot ถ้าข้อมูลทีนํามาเปรียบเทียบมีค่ามากกว่าหรือเท่ากับ pivot ให้แยกข้อมูลไว้ดา้ นขวา ถ้าน้อยกว่า pivot ให้แยกไว้ดา้ นซ้าย จะได้ขอ ้ มูลด้านซ้ายและด้านขวาโดยมี คันกลาง ทําตาวิธข ี า้ งต้นกับข้อมูลด้านซ้ายและด้านขวาจนกว่าจะหา pivot ไม่ได้


INSERTION SORT การเรียงลําดับแบบแทรก

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


RADIX SORT ก า ร เ รี ย ง ลํา ดั บ แ บ บ ฐ า น

ประสิทธิภาพเมือเกิดกรณีแย่ทีสุด จํานวนรอบ ของการเรียงลําดับ และจํานวนคิวทีใช้ในการ เรียงแต่ละรอบมาก ประสิทธิภาพเมือเกิดกรณีดีทีสุด จํานวนรอบ ของการเรียงลําดับ และจํานวนคิวทีใช้ในการ เรียงแต่ละรอบน้อย

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

นางสาวธนาภา เจรญสุข ชัน ม.4/4 เลขที 10ข


นางสาวธนาภา เจรญสุข ชัน ม.4/4 เลขที 10ข

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

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

ประสิ ทธิภาพเมือเกิดกรณีแย่ทีสุ ด จะต้องใช้เวลามากเมือเรา ใช้หาตัวเลขทีอยู่ติดๆกันและมีจํานวนมาก เช่น การหาจํานวน เลขทีมีเปนร้อยตัวจะใช้เวลานาน ประสิ ทธิภาพเมือเกิดกรณีดีทีสุ ด O(n+k)

รูปแบบการจัดเรียงข้อมูล แบ่งกลุ่มตามค่าของตัวเลขโดดในแต่ละตําแหน่ง หลังจากทีแต่ละกลุ่มถูกแบ่งแล้วเราจึงจัดเรียง อาจเริมจากหลักทีมากทีสุด แล้วลดหลันลงมาจนถึง หลัก หน่วย หรือ จัดเรียงโดยเริมจากหลักหน่วยไปหลักสิบไปหลักร้อย และต่อไปเรือย ๆ จนครบทุกหลัก สําหรับขันตอนวิธีทีเราเขียนจะใช้ หลักการแบบทีสอง คือเรียงตัวเลขโดยเริมจากกลุ่มเลขโดดในหลักหน่วย แล้วไล่ขึนไปจนถึงหลักสุดท้าย แต่เราต้องใช้วิธีการเรียงลําดับทีมีสมบัติ stableขันตอนวิธีการจัดลําดับที มีสมบัติ stable ถ้าข้อมูลสองจํานวนใด ๆ มีค่าเปรียบเทียบทีเหมือนกันแล้ว ลําดับของการจัดเรียงของ ข้อมูลทังสองตัว นันจะอยู่ในลําดับเดียวกับข้อมูลก่อนถูกจัดเรียง


นางสาวธนาภา เจริญสุข ชัน ม.4/4 เลขที 10ข

BUBBLE SORT การเรียงลําดับแบบฟอง

การเรียงลําดับแบบฟอง (bubblesort)เป็ นขัน ้ ตอนวิธีการเรียงลําดับที่เรียบงายมาก ดําเนิน การบนโครงสรางขอมูลประเภทรายการ ทํางานโดยเปรียบเทียบสมาชิกที่อยูติดกัน

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

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

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


RANDOM QUICK SORT

การเรียงลําดับด่วนแบบสุม ่

รูปแบบการจัดเรียงข้อมูล จัดเรยงจากเลขทีน้อยกว่า เช่น 3,5,7,9,11 นําเลขทีมีค่ามากทีสุด มาวาง ไว้ด้านหน้า นําเลขทีมีค่ามากทีสุดอันดับ2 มาไว้ด้านหหน้า

ผังงานแสดงขันตอนวิการจัดเรียงข้อมูล ี ดO(n^2) ประสิ ทธิภาพเมือเกิดกรณี แย่ทสุ ี ด O(n Log n) ี สุ ประสิ ทธิภาพเมือเกิดกรณี ดท

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

นางสาวธนาภา เจรญสุข ชัน ม.4/4 เลขที 10ข


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