การจัดเรียงข้อมูล (Sorting)

Page 1

การจัดเรยงข้อมูลแบบ Quick Sort มีขันตอน 4 ขัน

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

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

QUICK SORT ก า ร จั ด เ รี ย ง อ ย่ า ง ร ว ด เ ร็ ว

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

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

นางสาวรัมภรดา อาสนสุวรรณ ม.4/4 เลขที่ 10ก


SELECTION SORT การเรยงลําดับแบบเลือก

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

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

วธีการจัดเรยงข้อมูลที ได้รับมีประสิทธิภาพ สูงสุดเปนอย่างไร O(n2)มีสูตรเหมือนกับการจัดเรียง ขอมูลที่ไดประสิทิภาพที่สุด

ธีการจัดเรยงข้อมูลทีได้ รับมีประสิทธิภาพตํา สุดเปนอย่างไร O(n2) มีสูตรเหมือนกับการจัด เรียงขอมูลที่ไดรับประสิทธิภาพ ที่สุด

นางสาวรัมภ์รดา อาสนสุวรรณ ม.4/4 เลขที 10ก


Merge Sort

การเรยงลําดับแบบผสาน

รู ปแบบการจัดเรยงข้อมูล นันมีขันตอนวธีอย่างไร

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

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

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

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

วธีการจัดเรยงข้อมูลทีได้รับมี ประสิทธิภาพสูงสุดเปนอย่างไร { O(n^{2})}O คือใชในการระบุทรัพยากรที่ใช ในการทํางานของอัลกอริทึมเมื่อมีขนาดของ อินพุทเปลี่ยนไป O(n) คือ จํานวนที่ใชในการ ทํางานน อยสุด อัลกอริทึม A มีประสิทธิภาพ เป็ น O(n2) ถา n = 10 แลว ฟั งกชัน A จะ ใชเวลาทํางานชาที่สุด 100 หนวยเวลา (อาจ จะเร็วกวา100ได แตชาสุดไมเกิน100)

นางสาวรัมภรดา อาสนสุวรรณ ม.4/4 เลขที่ 10ก


เป น การจั ด เรี ย งโดยใช ก ารเปรี ย บเที ย บระหว า งข อ มู ล เป น หลั ก ซึ่ ง เราสามารถพิ สู จ น ใ ห เ ห็ น แล ว ว า การจั ด เรี ย ง ดั ง กล า วจะมี RUNNING TIME ไม ดี ไ ปกว า O(N LOG N) แต ว า ถ า เรามี ก ารจั ด เรี ย งข อ มู ล ซึ่ ง ค า ของข อ มู ล เป น จํา นวนเต็ ม ที่ อ ยู ระหว า ง 1 ถึ ง K แล ว เราสามารถเขี ย นขั้ น ตอนวิ ธี ที่ จั ด เรี ย งตั ว เลขชุ ด ดั ง กล า ว หรื อ ง า ยๆคื อ การจั ด เรี ย งจากเลข น อ ยไป มากว า มี จํา นวนกี่ ตั ว บ า ง ขั้ น ตอนการจั ด เรี ย งข อ มู ล 1.สั ง เกตเปรี ย บข อ มู ล โดยดู จ ากข อ มู ล ที่ ซํ้า กั น ก อ นว า มี ทั้ ง หมดกี่ แ บบ 2.นั บ จํา นวนข อ มู ล ว า มี จํา นวนข อ มู ล ที่ ซํ้า กั น ทั้ ง หมดกี่ ตั ว 3. นํา ข อ มู ล ที่ ร วบรวมได ม าเรี ย งข อ มู ล ตามลํา ดั บ อี ก โดยเรี ย งจากค า น อ ยไปหาค า มาก

4 . ว ธี ก า ร จั ด เ ร ย ง ข้ อ มู ล ที ไ ด้ รั บ มี ป ร ะ สิ ท ธิ ภ า พ ตํา สุ ด เ ป น อ ย่ า ง ไ ร

3 . ว ธี ก า ร จั ด เ ร ย ง ข้ อ มู ล ที ไ ด้ รั บ มี ป ร ะ สิ ท ธิ ภ า พ สู ง สุ ด เ ป น อ ย่ า ง ไ ร

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

1 . รู ป แ บ บ ก า ร จั ด เ ร ย ง ข้ อ มู ล นั น มี ขั น ต อ น ว ธี อ ย่ า ง ไ ร

COUNTING SORT

หลั ก การสํา คั ญ เราจะเขี ย นขั้ น ตอนที่ คํา นวณว า สํา หรั บ แต ล ะค า ของ 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 เลขที่ 10ก


RANDOM QUICK SORT

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

วิธีการจัดเรียงข้อมูลทีได้รับมีประสิทธิภาพสูงสุดอย่างไร

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

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

วิธีการจัดเรียงข้อมูลทีได้รับมีประสิทธิภาพตําสุด

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

นางสาวรัมภรดา

อาสนสุวรรณ ม.4/4 เลขที่ 10ก


INSERTION SORT

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

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

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

•วิ ธี ก ารจั ด เรี ย งข อ มู ล ที่ ไ ด รั บ มี ป ระสิ ท ธิ ภ าพต า สุ ด หรื อ ที่ เ เย ที่ สุ ด เป น กรณี ที่ ข อ มู ล ที่ จ ะนํา มาเรี ย งลํา ดั บ เรี ย งกลั บ กั น กั บ ที่ ต อ งการ เช น ต อ งการเรี ย งลํา ดั บ จากข อ มู ล น อ ยไปหา มาก เเต ข อ มู ล ที่ นํา มาเรี ย งลํา ดั บ จากมากไปหาน อ ย ซึ่ ง ถ า รวมจํา นวนครั้ ง ของทุ ก ๆรอบเเล ว จะได เ ท า กั บ 1+2+3…+(N-1)=N(N-1)/2 ครั้ ง รวมเวลาที่ ใ ช ประมาณ O(N^2)^2 นางสาวรัมภรดา

อาสนสุวรรณ ม.4/4 เลขที่ 10ก


RADIX SORT รูปแบบการจัดเรียงข้อมูลนันมีขันตอนวิธีอย่างไร

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

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

วิ ธก ี ารจัดนเรียงข้อมูลทีได้รบ ั มีประสิ ทธิภาพสูงสุดเปนอย่างไร การประเมิ ขันตอนวิธี RADIX-SORT(A, d) เมือ A เปนข้อมูลเข้า n ทีแต่ละค่ามีจํานวนตัวเลขสูงสุด d ตัว และ d เปนตําแหน่งสุดท้าย (most-significant digit) ของตัวเลขใน A ข้อมูลเข้า A[1..n], d ข้อมูลออก A[1..n] โดยที A[1] < A[2] < A[3] < . . . < A[n] สรุ ปคือ จํานวนรอบของการเรียงลําดับ และจํานวนคิวทีใช้ ในการเรียงแต่ละรอบน้อย

วิธก ี ารจัดเรียงข้อมูลทีได้รบ ั มีประสิ ทธิภาพตาสุดเปนอย่างไร ขันตอนวิธี RADIX-SORT(A, d) เมือ A เปนข้อมูลเข้า n ทีแต่ละค่ามีจํานวนตัวเลขสูงสุด d ตัว และ d เปนตําแหน่งสุดท้าย (most-significant digit) ของตัวเลขใน A ข้อมูลเข้า A[1..n], d ข้อมูลออก A[1..n] โดยที A[1] < A[2] < A[3] < . . . < A[n] สรุ ปคือ จํานวนรอบของการเรียงลําดับ และจํานวนคิวทีใช้ ในการเรียงแต่ละรอบมาก

นางสาวรัมภรดา

อาสนสุวรรณ ม.4/4 เลขที่ 10ก


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

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

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

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

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

กรณีทีแย่ทีสุด เปนกรณีทีต้องใช้จํานวนครังในการเปรีบย เทียบมากทีสุดนันคือ ถ้าไฟล์มีขนาด n ต้องใช้จํานวนครังใน การเปรียบเทียบมาทีสุดคือ จํานวน n-1 ครัง รวมเวลาทีใช้ และในแต่ละรอบจะมีจํานวนครังในการเปรียบเทียบดังนี รอบที 1 เปรียบเทียบ n-1 ครัง รอบที 2 เปรียบเทียบ n-2 ครัง รอบที 3 เปรียบเทียบ n-3 ครัง

ซึงจะรวมจํานวนครังของทุกๆรอบแล้วจะได้ (n – 1) + (n – 2) + (n – 3) + … + (n –… ) = n(n – 1)/2 รวมเวลาทีใช้ประมาณ o(n²) 0 คือจํานวนการทํางานในกรณีทีมากทีสุด

นางสาวรัมภรดา

อาสนสุวรรณ ม.4/4 เลขที่ 10ก


Turn static files into dynamic content formats.

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