บทที่ 7 การเรียงลำดับแบบภายนอก External Sorting นายบุญค้ำ จุลเจือ วิทยาลัยชุมชนตราด
ความนำ การเรียงลำดับภายในดังที่กล่าวในบทที่ 6 นั้นข้อมูลทั้งหมดจะต้องพร้อมอยู่ใน หน่วยความจำ ซึ่งไม่เหมาะกับแฟ้มข้อมูลขนาดใหญ่ ในหัวข้อนี้จะกล่างถึงการ เรียงข้อมูลจำนวนมากๆ Sort sublist 1 MERGE Merge list (record1-1000) Sort sublist 2 (sort list of record 1-2000) (record 1001-2000) การเรียงลำดับภายนอกส่วนใหญ่จะใช้หลักการคือ แบ่งระเบียนบอกเป็นกลุ่มย่อยๆ จากนั้นนำระเบียนกลุ่มย่อยจัดการเรียงข้อมูลแบบภายใน จากนั้นจึงนำข้อมูลมา ผสานกันเป็นแฟ้มเดียว แฟ้มย่อยที่ถูกเรียงลำดับแบบภายในเรียกว่า RUN
การเรียงลำดับแบบภายนอกมี 3 ขั้นตอนคือ 1.Internal sort phase ช่วงการเรียงลำดับแบบภายนอกจะทำการเรียง หลายๆ ครั้ง โดยกระจาย run ไปเก็บในอุปกรณ์บันทึกข้อมูลภายนอกหลายๆที่ 2.Merge phase ช่วงการรวบรวม run ต่างๆ ให้เป็น run เดียวกัน 3.Out phase ช่วงการคัดลอกแฟ้มที่เรียงแล้วไว้ในสื่อข้อมูล เทคนิคของการเรียงลำดับแบบภายนอกอาจแตกต่างกัน ขึ้นอยู่กับ 1.วิธีการเรียงลำดับภายในที่เลือกใช้ 2.การจัดสรรเนื้อที่หน่วยความจำ 3.การกระจาย run ต่างๆ ในอุปกรณ์บันทึกข้อมูล 4.จำนวน run ที่ใช้ในการผสานแต่ละรอบ
การผสานของการเรียงลำดับภายนอกมีหลายวิธีดังนี้ 1. Nalural merge 2. Balanced merge 3. Polyphase merge 4. Cascade merge
1. Nalural merge 1. Internal sort Phase การผสานครั้งละ 2 input เรียกว่า two-way-merge ถ้าผสานครั้งละ M input เราเรียกว่าM-way-merge เมื่อ M คือ degree ของการผสาน 6000 record Internal Sort phase 6 record subfiles
2. Merge Phase ใช้ 2-way merge จะต้องใช้เทป 3 ม้วน 2 2. Merge Phase ใช้ 2-way merge จะต้องใช้เทป 3 ม้วน 2.1 กระจายเทป run ไปสู่เทป 2 ม้วน 2.2 Merge pass1 T1:R1-R1000,R2001-R3000,R4001-R5000 T2:R1001-R200,R3001-R4000,R5001-R600 T3:empty เมื่อผ่านการ merge จะได้ T3:R1-R2000,R2001-R4000,R4001-R600 1 Merge pass1 3 R4001-r5000 , R2001-R3000 , R1-R1000 2 R1-R2000 R2001-R4000 R4001-R600 R5001-R6000 , R3001-R4000 , R1001-R2000
2.3 กระจาย Sorted runs (R1-R2000)จากเทป 3 ไปที่เทป 1 2.4 Merge pass2 T1:R1-R2000 T2:R2001-R4000(R4001-R6000) เมื่อผ่านการ Merge pass2 T2:R1—R4000 2 1 Merge pass2 R1-R4000 R1-R2000 3 R2001-R4000
2.5 Merge pass3 T2:R1-R4000 T3:R4001-R6000,(R2001-R4000) เมื่อผ่านการ Merge pass3 T1:R1-R6000
Balanced Merge 3 1 2 4 การใช้ 2-way balance merge สมมุติมี tape 4 ม้วน 1. กระจาย sorted runs ไปสู่เทป 2. Merge pass1 R 1-1000(run1) R 2001-3000(run3) R 4001-5000(run5) R 4001-4500 R 3001-3500 R 2001-2500 R 1001-1500 R 1-500 3 1 Merge pass1 R 5001-5500 2 4 R 4501-5000 R 3501-4000 R 2501-3000 R 1501-2000 R 501-1000 R 1001-2000(run2) R 3001-4000(run4) R 5001-6000(run6) R 5501-6000
3. Merge pass2 3 1 2 4 Merge Pass 2 run 1 +2; run 5+6 run5 ; run3 ; run1 3 1 Merge Pass 2 2 4 run 3 +4 run6 ; run4; run2
4.Merge pass3 1 3 2 Merge Pass 3 Run 1+2 Run 1 +2 +3+4 (run 5+6)
5.Mrege 4 Run 5+6 1 Merge Pass 4 2 3 run 1+2+3+4+5+6 run 1+2+3+4
การบ้าน สรุปเรื่อง การเรียงลำดับแบบภายนอก External Sorting ใส่กระดาษ A4 1 แผ่น