Polyphase Merge sort Trộn đa pha: Trộn đa lối cân bằng các mảng chưa được sử dụng 1 cách hiệu quả bởi vì trong cùng 1 lần duyệt thì phân nữa số mảng luôn luôn giữ vai trò trộn nguồn và p
Trang 1Polyphase Merge sort
Trộn đa pha:
Trộn đa lối cân bằng các mảng chưa được sử dụng
1 cách hiệu quả bởi vì trong cùng 1 lần duyệt thì phân nữa số mảng luôn luôn giữ vai trò trộn
(nguồn) và phân nữa giữ vai trò phân phối (đích)
Cải tiến: Thay đổi vai trò của các mảng trong cùng 1 lần duyệt Phương pháp trộn đa pha
Trang 2Polyphase Merge sort
Giải thuật:
Ta xét ví dụ với 3 mảng a1,a2,a3
B1: Phân phối luân phiên các run ban đầu của a vào a1,a2
B2: Trộn các run của a1,a2 vào a3 Giải thuật kết thúc nếu a3 chỉ còn 1 run
B3: Chép ½ run của a3 vào a1
B4: Trộn các run của a1,a3 vào a2 Giải thuật kết thúc nếu a2 chỉ còn 1 run
Trang 3Polyphase Merge sort
Nhược điểm:
- Mất thời gia sao chép ½ số run của mảng này vào mảng kia Việc sao chép này có thể loại bỏ nếu ta bắt đầu với Fn-1 run của mảng 1 và Fn-2 run của mảng 2 Với Fn-1, Fn-2 là các số liên tiếp trong nãy Fibonaci
Trang 4Polyphase Merge sort
Ví dụ: a=[13,12,11,10,9,8,7,6,5,4,3,2,1]
có tất cả 13 run
F6=13 (1 1 2 3 5 8 13)
Có tất cả 6 phase
a1 có 8 run, a2 có 5 run
Trang 5Polyphase Merge sort
(2,10);(1,9)
(3,6,11)
(2,10), (1,9)
(1,4,7,9,12)
(3,6,11)
)
9,10,11,12,13)