Transcript Sorting

การจัดเรี ยงข้อมูล
Sorting
Internal Sorting
External Sorting
Sorting
การเรียงลาดับข้ อมูล ทาให้ ผู้ต้องการใช้ ข้อมูลสามารถ
ทาความเข้ าใจกับข้ อมูลหรือค้ นหาได้ ง่ายและเร็วขึน้ โดย
อาจจะเรียงจากน้ อยไปหามาก Ascending หรือ มากไปหา
น้ อย Descending สามารถแบ่ งออกเป็ น 2 ประเภท คือ
Internal Sorting เก็บไว้ ในหน่ วยความจาหลัก
External Sorting เก็บไว้ ในหน่ วยความจาสารอง
Sorting Type
**Selecting Sort
**Insertion Sort or Linear Insertion Sort
**Bubble Sort
**Shell Sort
**Bucket Sort or Radix Sort
**Quick Sort
**Heap Sort or Tree Sort
Selection Sort
เป็ นวิธีที่ง่ายที่สุดในการเรี ยงลาดับ โดยเริ่ มจากหา
ตาแหน่งของข้อมูลที่มีค่าน้อยที่สุดสลับตาแหน่งข้อมูล
ใช้วิธีการเคลื่อนย้าย Address Node
40
30
10
50 79
A(1)
90
A(3)
60
95
26
85
10
40
30
60
95
26
85
10
26
40
90
60
95
85
10
26
30
50 79 90
A(2)
A(9)
30 50 79
A(3)
A(4)
40 50 79
90
60
95
85
Selection Sort
A(6)
10
26
30
10
26
30
40 50
A(8)
40 50
A(8)
60 79
A(10)
60 79
90
95
85
85
90
95
Insertion Sort or Linear Insertion Sort
อ่านข้อมูลที่ตอ้ งการเรี ยงลาดับเข้ามาทีละตัวโดย
เริ่ มจากตัวแรกก่อน และหาตาแหน่งของข้อมูลที่วา่ งแล้ว
แทรกข้อมูลตัวที่หนึ่งลงไป
Insertion Sort or Linear Insertion Sort
5
1
2
8
9
5
1
1
1
1
1
5
2
2
2
2
2
5
5
5
8
8
8
8
8
9
9
9
9
9
ต้องเพิม่ เนื้อที่ความจาเพิม่
อีก N ตาแหน่ง สาหรับ
ส่ วนที่เรี ยงแล้ว A(1:N)
ยังไม่ได้เรี ยงต้องใช้
B(1:N) มาช่วย โดยดึงแต่
ละค่าของ A ไปใส่
Bubble Sort
เป็ นการจัดเรี ยงโดยการเปรี ยบเทียบข้อมูลที่อยูใ่ น
ตาแหน่งที่ติดกัน ถ้าข้อมูลไม่อยูใ่ นลาดับที่ถูกต้องก็จะทา
การสลับตาแหน่งของข้อมูลที่เปรี ยบเทียบ เริ่ มจาก A(1)
เปรี ยบเทียบกับ A(2) ก่อนแล้วทาต่อไปเรื่ อย ๆ
โดยสามารถจัดเรี ยงได้ท้งั จากมากไปหาน้อยและ
น้อยไปหามาก
Bubble Sort
5
5
5
5
5
5
8
1
1
2
2
2
8
5
2
2
1
1
8
2
2
8
8
8
8
1
1
1
Shell Sort
คล้ายกับ Bubble Sort จะมีการแบ่งข้อมูลออกเป็ นกลุ่ม
โดยใช้สูตรในการคานวณคือ Ds = D s-1
2
Shell Sort
40
30
10
50
70
90
60
95
Ds = 10
=
5
2
(40,90) (30,60) (10,95) (50,26) (70,85)
Ds = 5
=
3
2
(40,60,50, 85) (90,10,26) (30,95,70)
Ds = 3
=
2
2
(40,50,90,26,95) (60,85,10,30,70)
Ds = 2
2
=
1
26
85
Shell Sort
(40 , 50 , 90 , 26 , 95 , 60 , 85 , 10 , 30 , 70)
แล้วทาการจัดเรี ยงตามวิธีของ Bubble Sort
10 26 30 40 50 60 70 85 90 95
Radix Sort or Bucket Sort
เป็ นการพิจารณาจากค่าข้อมูลออกเป็ นทีละหลัก
โดยรอบแรกจะพิจารณาหลักสุ ดท้ายก่อน (หลักหน่วย)
รอบต่อไปเป็ นหลักสิ บวนจนครบหลักของข้อมูล
Radix Sort or Bucket Sort
81
82
บักเก็ต
0
1
2
3
4
12
68
27
5
9
90
14
42
หลักหน่วย
90 70
81
12 82 42
14
35
70
บักเก็ต
5
6
7
8
9
76
55
37
หลักหน่วย
35 5 55
76
27 37
68
9
Radix Sort or Bucket Sort
ผลการจัดแรกเรี ยงรอบแรก
90
76
70
27
บักเก็ต
0
1
2
3
4
81
37
12
68
หลักสิ บ
05 09
12 14
27
35 37
42
82
9
42
14
บักเก็ต
5
6
7
8
9
35
5
หลักสิ บ
55
68
70 76
81 82
90
55
Radix Sort or Bucket Sort
ผลลัพธ์พิจารณาจากหลักสิ บ
5
68
9
70
12
76
14
81
27
82
35
90
37
42
55
Quick Sort
เป็ นวิธีการจัดเรี ยงที่ใช้เวลาน้อยที่สุด เหมาะ
กับข้อมูลปริ มาณมาก ๆ โดยการเลือก Key ขึ้น
มาหนึ่งค่าแล้วทาการดึงข้อมูลขึ้นมา
Heap Sort
เป็ นการเรี ยงโดยใช้วิธี Binary Tree มีเงื่อนไขว่า
โหนดที่เป็ นลูกจะต้องมีค่าน้อยกว่าหรื อเท่ากับค่าของ
โหนดที่เป็ นพ่อ
ตัวข้อมูล 42
23 74 11
65 58
นาค่าแรกมาเป็ นโหนดที่ 1 หรื อ Root
94
36
42
นาโหนดที่ 2 (23) เข้ามาเปรี ยบเทียบกับโหนดพ่อ
พิจารณาแล้วมีค่าน้อยกว่าจึงอยูด่ า้ นซ้าย
Heap Sort
42
23
นาค่าโหนด 3 (74) มาเทียบกับโหนดพ่อมีค่ามาก
กว่าโหนดพ่อซึ่งเท่ากับ 42 จึงทาการสลับ
74
23
42
นาค่าโหนด 4 (11) มาเปรี ยบเทียบกับโหนดพ่อ
Heap Sort
74
42
23
11
นาค่าโหนด 5 (65) มาเทียบโหนดพ่อ (23) แต่โหนด 5
มีค่ามากกว่าพ่อจึงสลับ
74
65
11
42
23
Heap Sort
นาโหนด 6 (58) เทียบกับโหนดพ่อปรากฏว่าโหนด
6 มีค่ามากกว่าโหนดพ่อจึงสลับ
74
58
65
11
23
42
Heap Sort
นาโหนด 7 (94) เทียบกับโหนดพ่อปรากฏว่ามากกว่า
โหนดพ่อจึงสลับ แล้ว 58 ยังมากกว่าโหนดพ่อคือ 74 จึง
สลับต่อไปจนถึง Root เพราะ 94 มากกว่า Root จึงสลับกัน
94
65
11
74
23
42
58
Heap Sort
นาโหนด 8 (36) เทียบกับโหนดพ่อ ปรากฏว่า 36
มากว่าโหนดพ่อจึงสลับ
94
65
36
74
23
42
58
11
จากนั้นให้ค่า Address Node แล้วทาการสลับตาแหน่ง
แบบ Selection Sort
Heap Sort
11
23
42
36
58
65
74
94
เมื่อผ่านวิธีการแล้วจะได้ค่า
11
23
36
42
58
65
74
94