ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยKit Lam ได้เปลี่ยน 10 ปีที่แล้ว
1
การเรียงข้อมูล 1. Bubble Sort 2. Insertion Sort 3. Heap Sort
4. Quick Sort 5. Merge Sort 6. Radix Sort 7. Selection Sort
2
1. Bubble Sort จะเปรียบเทียบค่า 2 ค่าที่ติดกัน
ถ้า ไม่อยู่ตามที่เรากำหนด เช่น จากน้อยไปมาก หรือ จากมากไปน้อย ให้แลกเปลี่ยนตำแหน่งของค่าทั้ง 2 นั้น
3
เรียงจากมากไปน้อย แบบ Bubble sort
5 1 2 8 9 5 1 2 8 9 5 2 1 8 9 5 2 1 8 9 5 2 8 1 9 5 8 2 1 9 8 5 2 1 9 8 5 2 1 9 8 5 2 1 9 8 5 2 1 9 8 5 2 1 9 8 5 2 1 9 8 5 2 1 9
4
2. Insertion Sort ต้องมีพื้นที่หน่วยความจำเพิ่มขึ้นอีก N ตำแหน่ง สำหรับเก็บส่วนที่เรียงแล้ว เช่น มี A(1: N) ที่ยังไม่เรียง เราต้องใช้ B(1:N) มาช่วย โดยจะดึงค่าจาก A ไปใส่ไว้ใน B หรืออาจจะใช้ Sort in Place คือไม่ต้องมีหน่วยความจำเพิ่ม J ส่วนที่เรียงแล้ว I ส่วนที่ยังไม่เรียง
5
เช่น 5, 4, 2, 8, 8, 9, 6 ต้องการเรียงจากน้อยไปมาก
เช่น 5, 4, 2, 8, 8, 9, 6 ต้องการเรียงจากน้อยไปมาก 5 4 2 8 9 6 J 5 4 2 8 9 6 4 5 2 8 9 6 J 2 4 5 8 9 6 J 2 4 5 8 9 6 J 2 4 5 8 9 6 J 2 4 5 8 9 6 J 2 4 5 6 8 9 J
6
3. Heap Sort การเรียงโดยอาศัยโครงสร้าง heap
เป็นวิธีการเรียงที่ดีที่สุด โครงสร้าง heap คือ รูตโหนด จะมีค่ามากกว่าด้านซ้าย และ ขวา ขั้นตอนการทำ Heap Sort สร้าง Heap ก่อน ทำการ Output Root Node จะได้ค่าแรก (ค่าที่มากที่สุด) เรียงจากมากไปน้อย ปรับแต่งต้นไม้ที่เหลือให้เป็น Heap
7
เช่น 22, 35,42, 38, 32, 26, 27, 90 22 35 42 38 32 27 26 90 ต้นไม้ที่แทนด้วยตำแหน่งของ Array
8
ขั้นตอนที่ 1 การสร้าง Heap
ให้ I เป็น Pointer ชี้ไปยัง Node ใหม่ ให้เปรียบเทียบโหนดที่เข้าไปใหม่ กับ โหนดที่ Root Node ถ้า โหนดใหม่ มากกว่า Root Node ให้ แลกที่กัน และเลื่อน I ไปด้วย (กรณี เรียงจากมากไปหาน้อย) ถ้าเรียงจากน้อยไปมาก ให้เปรียบเทียบ โหนดใหม่ น้อยกว่า Root Node ให้แลกที่กัน และ เลื่อน I ไปด้วย ทำการเปรียบเทียบไปเรื่อยจนกว่าจะทำไม่ได้
9
Heap Sort Example : Data -> 22 90 35 42 42 35 38 32 26 57 38 32 26 27 90 22 Binary tree ของ Array Heap Structure
10
Heap Sort Data -> I = 42 22 35 42 35 22 42 22 35 38 42 42 42 I = 38 38 35 38 35 38 35 22 32 22 32 26 22 32 26 27 I
11
Heap Sort Data -> I=90 42 90 I = 90 38 35 42 35 22 32 26 27 38 32 26 27 90 22
12
ได้โครงสร้าง Heap 90 42 35 38 32 27 26 22
13
ขั้นตอนที่ 2 การ output โดยการนำค่าที่ Root Node ซึ่งตำแหน่งที่ 1 ในอาร์เรย์ โดยการแลกที่กับค่าสุดท้ายของอาร์เรย์ ค่าที่ Output ไปแล้ว แทนด้วย
14
I ปรับแต่งต้นไม้ 90 22 Re-Heap 42 42 35 42 35 38 35 38 32 26 27 38 32
Heap Sort Data -> I ปรับแต่งต้นไม้ 90 22 Re-Heap 42 42 35 42 35 38 35 38 32 26 27 38 32 26 27 22 32 26 27 22 90 90 42 Re-Heap 27 38 output 38 35 38 35 32 35 22 32 26 27 22 32 26 42 22 27 26 42 I 90 90 90
15
จะได้ข้อมูลที่เรียงแล้ว จาก มากไปหาน้อย คือ เรียงน้อยไปมาก
16
ข้อมูล 88, 78, 34, 67, 74, 25, 27, 14, 40 Bubble Sort น้อยไปมาก Insertion Sort มากไปน้อย Heap Sort น้อยไปมาก
17
ขั้นที่ 3 การปรับต้นไม้
ให้ตั้งค่า Pointer I ชี้ไปยัง Root Node ให้แลกค่าที่มากที่สุดระหว่าง โหนดซ้าย กับ โหนดขวา ของ Node I มาอยู่ตำแหน่ง I แล้วให้เลื่อน Pointer I มาอยู่ตำแหน่งใหม่ด้วย ทำไปเรื่อยๆ จนกว่าจะทำไม่ได้
18
4. Quick Sort เหมาะกับลิสที่มีขนาดใหญ่ และเป็นการเรียงข้อมูลที่ให้ค่าเฉลี่ยของ เวลาน้อยที่สุด วิธีการ ให้ A (X1, X2… , Xn ) เป็นลิสต์ของค่าหรือ Record ที่ยังไม่ได้เรียง เราจะเลือก X1 จากนั้นจะแบ่งลิสต์ A ออกเป็น 2 ส่วนคือ S1 = ข้อมูลที่มีค่าน้อยกว่า X1 S2 = ข้อมูลที่มีค่ามากกว่า X1 นั้นคือ { S1} < X1 < {S2} โดยที่ {S1} และ {S2} เป็นข้อมูลที่ยังไม่เรียง
19
ขั้นตอนการเรียง Quick Sort
1. ใช้ Pointer 2 ตัว คือ F , R 2. เปรียบเทียบ ระหว่างค่าที่ชี้โดย F และ R (Pointer ที่ชี้ตำแหน่ง X1 ไม่ว่าจะเป็น F, R จะไม่เป็นตัวเลื่อนไปยังตำแหน่งอื่น) 3. การเปรียบเทียบจะมีการเลื่อน F ไปข้างหน้า และ R เลื่อนถอยหลัง 4. การเลื่อน Pointer ให้เลื่อนตัวที่ไม่ได้ชี้ไปยังค่า X1 หรือ ที่ทำหน้าที่ X1 ในการเรียงเที่ยวนั้น ถ้า F และ R พบกันที่ค่า X1 เป็นการสิ้นสุดเที่ยวนั้น ฉะนั้นจึงเป็นการแบ่งลิสต์ออกเป็น 2 ส่วนโดย ค่า X1 เป็นค่าแบ่ง
20
5. ให้ Push ค่า {S2} ไปไว้ใน Stack ก่อน
7. PoP ค่า {S2} ขึ้นมาทำการเรียงโดยใช้ 1-4 เหมือนเดิม จะได้ข้อมูลที่เรียงแล้ว
21
เช่น 27, 15, 22, 37, 11, 59 เรียง น้อยไปมาก R F x x x x x x6 F R R F R F F R F R R F
22
F R F R F R ( ) ( )
23
5. Merge Sort เป็นวิธีเรียงข้อมูลภายนอก เพราะใช้เรียงข้อมูลขนาดใหญ่
เรียงครั้งละ 2 ค่า จะได้กลุ่มย่อย ของข้อมูลเป็น n/2 กลุ่ม แต่ละกลุ่มมี 2 ค่า Merge 2 กลุ่มเข้าด้วยกัน จะได้กลุ่มเรียงแล้ว
24
เช่น 44, 33, 11, 55, 77, 90, 40, 60, 99, 22, 88, 66
25
6. Radix Sort จะไม่พิจารณาค่าที่แท้จริงของคีย์ จะแยกพิจารณาคีย์ออกเป็น ที่ละหลัก วิธีเรียง เตรียม Bucket ไว้ 10 ถัง อ่านค่าข้อมูลที่ละตัว พิจารณาหลักสูดท้ายก่อน นำข้อมูลไปเก็บไว้ตามค่านั้นๆ อ่านค่าหลักต่อไปจนกว่าจะครบทุกหลัก จะได้ข้อมูลที่เรียงแล้ว
26
RADIX SORT Technique : Start with the ones column of each key and sort all 0s, 1s, 2s, etc into separate group. (ครั้งที่ 1 [หลักหน่วย]) 131 41 59 26 53 58 97 93 23 84 16 77 1 01 23 41 93 16 77 31 53 84 26 97 58 59 ถังข้อมูล
27
RADIX SORT 2. Arrange the groups in ascending order. 23 41 93 16 77 31 53 84 26 97 58 59 ถังข้อมูล (ข้อมูลที่ได้จากครั้งที่ 1) 31 41 53 93 23 84 26 16 97 77 58 59
28
RADIX SORT Repeat this sorting with the 1s, 10s, 100s, 1000s, etc columns. (ข้อมูลที่ได้จากครั้งที่ 1) 31 41 53 93 23 84 26 16 97 77 58 59 (ครั้งที่ 2 [หลักสิบ]) 59 26 58 97 01 16 23 31 41 53 77 84 93 ถังข้อมูล (ข้อมูลที่ได้จากครั้งที่ 2) 16 23 26 31 41 53 58 59 77 84 93 97 Sorted data
29
7. Selection Sort เป็นวิธีที่ง่ายที่สุด
หาตำแหน่งข้อมูลที่มีค่าน้อยที่สุด สลับตำแหน่ง key ไปไว้ในตำแหน่งที่ 1 นำค่าตำแหน่งที่ 1 แทน ณ ข้อมูลน้อยที่สุด จะได้ข้อมูลตำแหน่งที่ 1 มีค่าน้อยที่สุด
30
เช่น 44, 33, 11, 55, 77, 90, 40, 60, 22, 88
32
ทำส่งในชั้นเรียน เรียงน้อยไปมาก
33
การบ้าน
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.