Professional Documents
Culture Documents
ĐHSP
http://fit.hcmup.edu.vn/~tienttt
Nội dung
2
20/06/2010
1
20/06/2010
Đặt vấn đề
Vì sao phải xây dựng thuật toán sắp xếp
trên file?
Thao tác cơ bản trong SX là hoán vị
Thực hiện hoán vị trên cùng 1 file Tần
suất thao tác lên trên 1 vùng đĩa quá
lớn Không an toàn.
SX ngoại không thích hợp với hoán vị
Sử dụng phương pháp trộn.
4
20/06/2010
2
20/06/2010
5
20/06/2010
3
20/06/2010
8
20/06/2010
4
20/06/2010
9
20/06/2010
10
20/06/2010
5
20/06/2010
11
20/06/2010
12
20/06/2010
6
20/06/2010
13
20/06/2010
14
20/06/2010
7
20/06/2010
15
20/06/2010
16
20/06/2010
8
20/06/2010
17
20/06/2010
18
20/06/2010
9
20/06/2010
19
20/06/2010
20
20/06/2010
10
20/06/2010
11
20/06/2010
12
20/06/2010
25
20/06/2010
13
20/06/2010
[Bước 3]
Nếu (nDemRun == 1) thì Kết thúc thuật
toán
ngược lại {
Nếu (nDemRun < n) thì Str = Drun; // Không đủ n run
ngược lại Str = D;
Drun = {};
nDemRun = 0;
“Hoán vị tập S, D”
Goto [Bước 2]
}
28
20/06/2010
14
20/06/2010
29
20/06/2010
30
20/06/2010
15
20/06/2010
3 5 2 7 12 8 4 15 20 1 2 8 23 7 21 27
f1
f2
f3
20/06/2010
16
20/06/2010
f2 2 7 12 1 2 8 23
f3 8 7 21 27
3 2 8 7 5 12
g1
g2 1 2 4 7 8 15 20 21 23 27
g3
33
20/06/2010
g2 1 2 6
4 8
7 15
8 18
15 20 21 23 27
g3
f1 1 2 2 3 4 5 7 7 8 8 12 15 20 21 23 27
f2
f3
34
20/06/2010
17
20/06/2010
35
20/06/2010
18
20/06/2010
PP trộn đa pha -
Ví dụ: Trường hợp n = 7, tổng số run ban đầu là
13 + 8 = 21 run
Pharse F1 F2 F3
0 1,1,1,1,1,1,1,1 1,1,1,1,1 Sort
1 1,1,1 2,2,2,2,2 Merge1
2 3,3,3 2,2 Merge2
3 5,5 3 Merge3
4 5 8 Merge4
5 13 Merge4
6 21 Merge6
37
20/06/2010
PP trộn đa pha -
Phase 0: Phân phối các run ban đầu
Phase 1: Trộn 8 run của f1 và f2 vào f3
Phase 2: Trộn 5 run của f1 và f3 vào f2
Phase 3: Trộn 3 run của f2 và f3 vào f1
Phase 4: Trộn 2 run của f1 và f2 vào f3
Phase 5: Trộn 1 run của f1 và f3 vào f2
Phase 6: Trộn 1 run của f2 và f3 vào f1
38
20/06/2010
19
20/06/2010
ĐHSP
20