Tải bản đầy đủ (.pdf) (55 trang)

Giáo trình cấu trúc dữ liệu nâng cao phần 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (617.33 KB, 55 trang )

Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
1


1
C
C


U TR
U TR
Ú
Ú
C D
C D


LI
LI


U NÂNG CAO
U NÂNG CAO
N
N


i
i
dung
dung
chương
chương
tr

tr
ì
ì
nh
nh
Chương
Chương
1:
1:
S
S


p
p
x
x
ế
ế
p
p
ngo
ngo


i
i
Chương
Chương
2:

2:
B
B


ng
ng
băm
băm
Chương
Chương
3:
3:
Cây
Cây
đ
đ


đen
đen
Chương
Chương
4:
4:
B
B
-
-
Tree.

Tree.
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2

u 2
2
2
T
T
À
À
I NGUYÊN H
I NGUYÊN H


C T
C T


P
P
1.
1.
Trương
Trương
H
H


i
i
B
B



ng
ng
,
,
Gi
Gi
á
á
o
o
tr
tr
ì
ì
nh
nh
C
C


u
u
tr
tr
ú
ú
c
c
d

d


li
li


u
u
2
2
,
,
Nh
Nh
à
à
xu
xu


t
t
b
b


n
n
Đ

Đ


i
i
h
h


c
c
qu
qu


c
c
gia
gia
Tp
Tp
.
.
H
H


Ch
Ch
í

í
Minh
Minh
,
,
2005
2005
2.
2.
Trương
Trương
H
H


i
i
B
B


ng
ng
,
,
T
T
à
à
i

i
li
li


u
u
tham
tham
kh
kh


o
o
b
b


sung,
sung,
Đ
Đ
ĩ
ĩ
a
a
CD
CD
-

-
Rom,
Rom,
Nh
Nh
à
à
xu
xu


t
t
b
b


n
n
Đ
Đ


i
i
h
h


c

c
qu
qu


c
c
gia
gia
Tp
Tp
.
.
H
H


Ch
Ch
í
í
Minh
Minh
, 2005
, 2005
3.
3.
Robert
Robert
L.Kruse

L.Kruse
, Alexander J.
, Alexander J.
Ryba
Ryba
,
,
Data
Data
structures and program Design in C++,
structures and program Design in C++,
Prentice
Prentice
-
-
Hall International, Inc, 1999
Hall International, Inc, 1999
4.
4.
H
H


th
th


ng
ng
b

b
à
à
i
i
t
t


p
p
m
m


u
u
Trương H
Trương H


i B
i B


ng
ng
-
-
C

C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
3
3
HÌNH TH
HÌNH TH


C THI
C THI


thuy
thuy
ế

ế
t
t
: 60% ,
: 60% ,
Thi
Thi
t
t


lu
lu


n
n
Th
Th


c
c
h
h
à
à
nh
nh
: 40%,

: 40%,
N
N


p
p
B
B
à
à
i
i
t
t


p
p
l
l


n
n
Chương
Chương
1
1
:

:
C
C
à
à
i
i
đ
đ


t
t
c
c
á
á
c
c
gi
gi


i
i
thu
thu


t

t
s
s


p
p
x
x
ế
ế
p
p
ngo
ngo


i
i
Chương
Chương
2
2
:
:
C
C
à
à
i

i
đ
đ


t
t
b
b


ng
ng
băm
băm
(5
(5
phương
phương
ph
ph
á
á
p
p
gi
gi


i

i
quy
quy
ế
ế
t
t
đ
đ


ng
ng
đ
đ


)
)


B
B
à
à
i
i
to
to
á

á
n
n
qu
qu


n
n


sinh
sinh
viên
viên


Chương
Chương
tr
tr
ì
ì
nh
nh
t
t


đi

đi


n
n
Chương
Chương
3
3
:
:
Cây
Cây
đ
đ


đen
đen
:
:
C
C
à
à
i
i
đ
đ



t
t
c
c
á
á
c
c
ph
ph
é
é
p
p
to
to
á
á
n
n
Chương
Chương
4
4
: B
: B
-
-
TREE:

TREE:
C
C
à
à
i
i
đ
đ


t
t
c
c
á
á
c
c
ph
ph
é
é
p
p
to
to
á
á
n

n
Lưu
Lưu
ý:
ý:
(
(
Yêu
Yêu
c
c


u
u
n
n


p
p
b
b
à
à
i
i
t
t



p
p
cu
cu


i
i
kho
kho
á
á
):
):
Xây
Xây
d
d


ng
ng
giao
giao
di
di


n

n
trên
trên
window,
window,
c
c
á
á
c
c
giao
giao
di
di


n
n
đ
đ


ho
ho


-
-
ưu

ưu
tiên
tiên
cho
cho
c
c
á
á
c
c
c
c
à
à
i
i
đ
đ


t
t
OOP
OOP
(C++
(C++
ho
ho



c
c
Java)
Java)
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li

li


u 2
u 2
4
4
CHƯƠNG
CHƯƠNG
1
1
-
-
S
S


P TH
P TH


T
T


NGO
NGO


I

I
N
N


i
i
dung
dung
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
2.
2.
Phương

Phương
ph
ph
á
á
p
p
tr
tr


n
n
t
t


nhiên
nhiên
3.
3.
Phương
Phương
ph
ph
á
á
p
p
tr

tr


n
n
đa
đa
l
l


i
i
cân
cân
b
b


ng(balanced
ng(balanced
multiway
multiway
merging)
merging)
4.
4.
Phương
Phương
ph

ph
á
á
p
p
tr
tr


n
n
đa
đa
pha(Polyphase
pha(Polyphase
Merge)
Merge)
Trương H
Trương H


i B
i B


ng
ng
-
-
C

C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
5
5
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr

tr


n
n
Run
Run
Kh
Kh
á
á
i
i
ni
ni


m
m


b
b


n
n
:
:



Run
Run
l
l
à
à
m
m


t
t
dãy
dãy
liên
liên
ti
ti
ế
ế
p
p
c
c
á
á
c
c
ph

ph


n
n
t
t


đư
đư


c
c
s
s


p
p
th
th


t
t


.

.
V
V
í
í
d
d


2 4 7 12 50
2 4 7 12 50
l
l
à
à
m
m


t
t
run
run
g
g


m
m
c

c
ó
ó
5
5
ph
ph


n
n
t
t




Chi
Chi


u
u
d
d
à
à
i
i
run

run
ch
ch
í
í
nh
nh
l
l
à
à
s
s


ph
ph


n
n
t
t


trong
trong
Run.
Run.
Ch

Ch


ng
ng
h
h


n
n
, run
, run
trong
trong
v
v
í
í
d
d


trên
trên
c
c
ó
ó
chi

chi


u
u
d
d
à
à
i
i
l
l
à
à
5.
5.
Trương H
Trương H


i B
i B


ng
ng
-
-
C

C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
6
6
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr

tr


n
n
Run
Run
(
(
tt
tt
)
)
Gi
Gi


i
i
thu
thu


t
t
:
:
Gi
Gi



i
i
thu
thu


t
t
s
s


p
p
x
x
ế
ế
p
p
t
t


p
p
tin
tin
b

b


ng
ng
phương
phương
ph
ph
á
á
p
p
tr
tr


n
n
run
run
c
c
ó
ó
th
th


t

t
ó
ó
m
m




c
c
như
như
sau
sau
:
:
Input
Input
:
:
f0
f0
l
l
à
à
t
t



p
p
tin
tin
c
c


n
n
s
s


p
p
th
th


t
t


.
.
Output
Output
:

:
f0
f0
l
l
à
à
t
t


p
p
tin
tin
đã
đã
đư
đư


c
c
s
s


p
p
th

th


t
t


.
.
G
G


i
i
f1, f2
f1, f2
l
l
à
à
2
2
t
t


p
p
tin

tin
tr
tr


n
n
.
.
C
C
á
á
c
c
t
t


p
p
tin f0, f1, f2
tin f0, f1, f2
c
c
ó
ó
th
th



l
l
à
à
c
c
á
á
c
c
t
t


p
p
tin
tin
tu
tu


n
n
t
t


(text file) hay

(text file) hay
c
c
ó
ó
th
th


l
l
à
à
c
c
á
á
c
c
t
t


p
p
tin
tin
nh
nh



phân
phân
.
.
-
-
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d



li
li


u 2
u 2
7
7
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
(
(
tt

tt
)
)






c 1:
c 1:


-
-
Gi
Gi


s
s


c
c
á
á
c ph
c ph



n t
n t


trên f0 l
trên f0 l
à
à
:
:


24 12 67 33 58 42 11 34 29 31
24 12 67 33 58 42 11 34 29 31


-
-
Kh
Kh


i t
i t


o f1, f2 r
o f1, f2 r



ng
ng


-
-
Th
Th


c hi
c hi


n phân b
n phân b


m=1 ph
m=1 ph


n t
n t


l
l



n lư
n lư


t t
t t


f0 v
f0 v
à
à
o
o
f1 v
f1 v
à
à
f2:
f2:


f1: 24 67 58 11 29
f1: 24 67 58 11 29
f2: 12 33 42 34 31
f2: 12 33 42 34 31


Tr

Tr


n f1, f2 th
n f1, f2 th
à
à
nh f0:
nh f0:


f0: 12 24 33 67 42 58 11 34 29 31
f0: 12 24 33 67 42 58 11 34 29 31
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr

u tr
ú
ú
c d
c d


li
li


u 2
u 2
8
8
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n

n
Run
Run
(
(
tt
tt
)
)




c
c
2:
2:
-
-
Phân
Phân
b
b


m=2
m=2
ph
ph



n
n
t
t


l
l


n
n




t
t
t
t


f0
f0
v
v
à
à
o

o
f1
f1
v
v
à
à
f2:
f2:
f1: 12 24 42 58 29 31
f1: 12 24 42 58 29 31
f0:
f0:
12 24
12 24
33 67
33 67
42 58
42 58
11 34
11 34
29 31
29 31
f2:
f2:
33 67
33 67
11 34
11 34
-

-
Tr
Tr


n
n
f1, f2
f1, f2
th
th
à
à
nh
nh
f0:
f0:
f
f
1:
1:
12 24
12 24
42 58
42 58
29 31
29 31
f0:
f0:
12 24 33 67

12 24 33 67
11 34 42 58
11 34 42 58
29 31
29 31
f2:
f2:
33 67
33 67
11 34
11 34
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú

ú
c d
c d


li
li


u 2
u 2
9
9
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run

Run
(
(
tt
tt
)
)




c
c
3:
3:
-
-
Tương
Tương
t
t






c
c
2,

2,
phân
phân
b
b


m=4
m=4
ph
ph


n
n
t
t


l
l


n
n




t

t
t
t


f0
f0
v
v
à
à
o
o
f1
f1
v
v
à
à
f2,
f2,
k
k
ế
ế
t
t
qu
qu



thu
thu
đư
đư


c
c
như
như
sau
sau
:
:
f1:
f1:
12 24 33 67
12 24 33 67
29 31
29 31
f2:
f2:
11 34 42 58
11 34 42 58
-
-
Tr
Tr



n
n
f1, f2
f1, f2
th
th
à
à
nh
nh
f0:
f0:
f0:
f0:
11 12 24 33 34 42 58 67
11 12 24 33 34 42 58 67
29 31
29 31
Trương H
Trương H


i B
i B


ng
ng
-

-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
10
10
1.
1.
Phương
Phương
ph
ph
á
á
p

p
tr
tr


n
n
Run
Run
(
(
tt
tt
)
)




c
c
4:
4:
-
-
Phân
Phân
b
b



m=8
m=8
ph
ph


n
n
t
t


l
l


n
n




t
t
t
t


f0

f0
v
v
à
à
o
o
f1
f1
v
v
à
à
f2:
f2:
f1: 11 12 24 33 34 42 58 67
f1: 11 12 24 33 34 42 58 67
f2: 29 31
f2: 29 31
-
-
Tr
Tr


n
n
f1, f2
f1, f2
th

th
à
à
nh
nh
f0:
f0:
f0: 11 12 24 29 31 33 34 42 58 67
f0: 11 12 24 29 31 33 34 42 58 67




c
c
5:
5:
L
L


p
p
l
l


i
i
tương

tương
t
t


c
c
á
á
c
c




c
c
trên
trên
,
,
cho
cho
đ
đ
ế
ế
n
n
khi

khi
chi
chi


u
u
d
d
à
à
i
i
m
m
c
c


a
a
run
run
c
c


n
n
phân

phân
b
b


l
l


n
n
hơn
hơn
chi
chi


u
u
d
d
à
à
i
i
n
n
c
c



a
a
f0
f0
th
th
ì
ì
d
d


ng
ng
.
.
Trương H
Trương H


i B
i B


ng
ng
-
-
C

C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
11
11
void
void
chia(FILE
chia(FILE
*
*
a,FILE
a,FILE
*
*
b,FILE

b,FILE
*
*
c,int
c,int
p)
p)
void main (void)
void main (void)
{
{
FILE *a,*b,*c;
FILE *a,*b,*c;
tao_file
tao_file
();
();
xuat_file
xuat_file
();
();
p = 1;
p = 1;
while (p < n)
while (p < n)
{
{
chia(a,b,c,p
chia(a,b,c,p
);

);
tron(b,c,a,p
tron(b,c,a,p
);
);
p=2*p;
p=2*p;
}
}
}
}
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
(

(
tt
tt
)
)
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li

li


u 2
u 2
12
12
void
void
chia(FILE
chia(FILE
*
*
a,FILE
a,FILE
*
*
b,FILE
b,FILE
*
*
c,int
c,int
p)
p)
while (!
while (!
feof(a
feof(a
))

))
{
{
/*
/*
Chia
Chia
p
p
phan
phan
tu
tu
cho
cho
b
b
*/
*/
dem
dem
=0;
=0;
while ((
while ((
dem
dem
<p) && (!
<p) && (!
feof(a

feof(a
)))
)))
{
{
fscanf(a,"%3d",&x);
fscanf(a,"%3d",&x);
fprintf(b,"%3d",x);
fprintf(b,"%3d",x);
dem
dem
++;
++;
}
}
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n

n
Run
Run
(
(
tt
tt
)
)
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d

c d


li
li


u 2
u 2
13
13
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
(

(
tt
tt
)
)
dem
dem
=0;
=0;
while ((
while ((
dem
dem
<p) && (!
<p) && (!
feof(a
feof(a
)))
)))
{
{
fscanf(a,"%3d",&x);
fscanf(a,"%3d",&x);
fprintf(c,"%3d",x);
fprintf(c,"%3d",x);
dem
dem
++;
++;
}

}
}
}
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li



u 2
u 2
14
14
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
(
(
tt
tt
)
)
void

void
tron(FILE
tron(FILE
*
*
b,FILE
b,FILE
*
*
c,FILE
c,FILE
*
*
a,int
a,int
p)
p)
int
int
stop,x,y,l,r
stop,x,y,l,r
;
;
a=
a=
fopen("d:
fopen("d:
\
\
ctdl

ctdl
\
\
sortfile
sortfile
\
\
bang.int","wb
bang.int","wb
");
");
b=fopen("d:
b=fopen("d:
\
\
ctdl
ctdl
\
\
sortfile
sortfile
\
\
bang1.int","rb");
bang1.int","rb");
c=fopen("d:
c=fopen("d:
\
\
ctdl

ctdl
\
\
sortfile
sortfile
\
\
bang2.int","rb");
bang2.int","rb");
while ((!
while ((!
feof(b
feof(b
)) && (!
)) && (!
feof(c
feof(c
)))
)))
{
{
l=0;/*
l=0;/*
so
so
phan
phan
tu
tu
cua

cua
b
b
da
da
ghi
ghi
len
len
a*/
a*/
r=0;/*
r=0;/*
so
so
phan
phan
tu
tu
cua
cua
c
c
da
da
ghi
ghi
len
len
a

a
*/
*/
fscanf(b,"%3d",&x);
fscanf(b,"%3d",&x);
fscanf(c,"%3d",&y);
fscanf(c,"%3d",&y);
stop=0;
stop=0;
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d

c d


li
li


u 2
u 2
15
15
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
(

(
tt
tt
)
)
while ((l!=p) && (r!=p) && (!stop))
while ((l!=p) && (r!=p) && (!stop))
{
{
if (x<y)
if (x<y)
{
{
fprintf(a,"%3d",x);
fprintf(a,"%3d",x);
l++;
l++;
if ((l<p) && (!
if ((l<p) && (!
feof(b
feof(b
)))
)))
/*
/*
chua du p phan tu va chua het file b
chua du p phan tu va chua het file b
*/
*/
fscanf(b,"%3d",&x);

fscanf(b,"%3d",&x);
else
else
{
{
fprintf(a,"%3d",y);
fprintf(a,"%3d",y);
r++;
r++;
if (
if (
feof(b
feof(b
))
))
stop=1;
stop=1;
}
}
}
}
Trương H
Trương H


i B
i B


ng

ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
16
16
1.
1.
Phương
Phương
ph
ph
á

á
p
p
tr
tr


n
n
Run
Run
(
(
tt
tt
)
)
else
else
{
{
fprintf(a,"%3d",y);
fprintf(a,"%3d",y);
r++;
r++;
if ((r<p) && (!
if ((r<p) && (!
feof(c
feof(c
)))

)))
/*
/*
chua
chua
du p
du p
phan
phan
tu
tu
va
va
chua
chua
het
het
file c
file c
*/
*/
fscanf(c,"%3d",&y);
fscanf(c,"%3d",&y);
else
else
{
{
Trương H
Trương H



i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
17
17
1.

1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
(
(
tt
tt
)
)
fprintf(a,"%3d",x);
fprintf(a,"%3d",x);
l++;
l++;
if (
if (
feof(c

feof(c
))
))
stop=1;
stop=1;
}
}
}
}
}
}
//
//
Chep
Chep
phan
phan
con
con
lai
lai
cua
cua
p
p
phan
phan
tu
tu
tren

tren
b
b
len
len
a
a
while ((!
while ((!
feof(b
feof(b
)) && (l<p))
)) && (l<p))
{
{
fscanf(b,"%3d",&x);
fscanf(b,"%3d",&x);
fprintf(a,"%3d",x);
fprintf(a,"%3d",x);
l++;
l++;
}
}
Trương H
Trương H


i B
i B



ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
18
18
1.
1.
Phương
Phương
ph

ph
á
á
p
p
tr
tr


n
n
Run
Run
(
(
tt
tt
)
)
//
//
Chep
Chep
phan
phan
con
con
lai
lai
cua

cua
p
p
phan
phan
tu
tu
tren
tren
c
c
len
len
a
a
while ((!
while ((!
feof(c
feof(c
)) && (r<p))
)) && (r<p))
{
{
fscanf(c,"%3d",&y);
fscanf(c,"%3d",&y);
fprintf(a,"%3d",y);
fprintf(a,"%3d",y);
r++;
r++;
}

}
}
}
if (!
if (!
feof(b
feof(b
))
))
{
{
/*
/*
chep
chep
phan
phan
con
con
lai
lai
cua
cua
b
b
len
len
a
a
*/

*/
while (!
while (!
feof(b
feof(b
))
))
{
{
fscanf(b,"%3d",&x);
fscanf(b,"%3d",&x);
fprintf(a,"%3d",x);
fprintf(a,"%3d",x);
}
}
}
}
Trương H
Trương H


i B
i B


ng
ng
-
-
C

C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
19
19
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr

tr


n
n
Run
Run
(
(
tt
tt
)
)
{
{
fscanf(c,"%3d",&x);
fscanf(c,"%3d",&x);
fprintf(a,"%3d",x);
fprintf(a,"%3d",x);
}
}
}
}
fclose(a
fclose(a
);
);
fclose(b
fclose(b
);

);
fclose(c
fclose(c
);
);
}
}
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d



li
li


u 2
u 2
20
20
1.
1.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
Run
Run
(
(
tt

tt
)
)
/*
/*
Chia
Chia
p
p
phan
phan
tu
tu
cho
cho
c
c
*/
*/
dem
dem
=0;
=0;
while ((
while ((
dem
dem
<p) && (!
<p) && (!
feof(a

feof(a
)))
)))
{
{
fscanf(a,"%3d",&x);
fscanf(a,"%3d",&x);
fprintf(c,"%3d",x);
fprintf(c,"%3d",x);
dem
dem
++;
++;
}
}
}
}
Trương H
Trương H


i B
i B


ng
ng
-
-
C

C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
21
21
2.
2.
Phương
Phương
ph
ph
á
á
p
p
tr

tr


n
n
t
t


nhiên
nhiên
Gi
Gi


i
i
thu
thu


t
t
:
:


Trong
Trong
phương

phương
ph
ph
á
á
p
p
tr
tr


n
n
đã
đã
tr
tr
ì
ì
nh
nh
b
b
à
à
y
y


trên

trên
,
,
gi
gi


i
i
thu
thu


t
t
không
không
t
t


n
n
d
d


ng
ng
đư

đư


c
c
chi
chi


u
u
d
d
à
à
i
i
c
c


c
c
đ
đ


i
i
c

c


a
a
c
c
á
á
c
c
run
run
trư
trư


c
c
khi
khi
phân
phân
b
b


; do
; do
v

v


y
y
,
,
vi
vi


c
c
t
t


i
i
ưu
ưu
thu
thu


t
t
to
to
á

á
n
n
chưa
chưa
đư
đư


c
c
t
t


n
n
d
d


ng
ng
.
.


Đ
Đ



c
c
đi
đi


m
m


b
b


n
n
c
c


a
a
phương
phương
ph
ph
á
á
p

p
tr
tr


n
n
t
t


nhiên
nhiên
l
l
à
à
t
t


n
n
d
d


ng
ng
đ

đ


d
d
à
à
i
i


t
t


nhiên
nhiên


c
c


a
a
c
c
á
á
c

c
run
run
ban
ban
đ
đ


u
u
;
;
ngh
ngh
ĩ
ĩ
a
a
l
l
à
à
,
,
th
th


c

c
hi
hi


n
n
vi
vi


c
c
tr
tr


n
n
c
c
á
á
c
c
run
run
c
c
ó

ó
đ
đ


d
d
à
à
i
i
c
c


c
c
đ
đ


i
i
vơi
vơi
nhau
nhau
cho
cho
đ

đ
ế
ế
n
n
khi
khi
dãy
dãy
ch
ch


bao
bao
g
g


m
m
m
m


t
t
run:
run:
dãy

dãy
đã
đã
đư
đư


c
c
s
s


p
p
th
th


t
t


.
.
Trương H
Trương H


i B

i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
22
22
2.
2.
Phương

Phương
ph
ph
á
á
p
p
tr
tr


n
n
t
t


nhiên
nhiên
(
(
tt
tt
)
)
Input
Input
:
:
f0

f0
l
l
à
à
t
t


p
p
tin
tin
c
c


n
n
s
s


p
p
th
th


t

t


.
.
Output
Output
:
:
f0
f0
l
l
à
à
t
t


p
p
tin
tin
đã
đã
đư
đư


c

c
s
s


p
p
th
th


t
t


.
.
L
L


p
p
Cho
Cho
đ
đ
ế
ế
n

n
khi
khi
dãy
dãy
c
c


n
n
s
s


p
p
ch
ch


g
g


m
m
duy
duy
nh

nh


t
t
m
m


t
t
run.
run.
Phân
Phân
b
b


:
:
Phân
Phân
b
b


F0
F0
v

v
à
à
o
o
F1
F1
v
v
à
à
F2
F2
theo
theo
c
c
á
á
c
c
run
run
t
t


nhiên
nhiên
Tr

Tr


n
n
:
:
Trôn
Trôn
c
c
á
á
c
c
run
run
cua
cua
F1
F1
v
v
à
à
F2
F2
v
v
à

à
o
o
F0
F0
Qu
Qu
á
á
tr
tr
ì
ì
nh
nh
n
n
à
à
y
y
s
s


ti
ti
ế
ế
p

p
t
t


c
c
cho
cho
đ
đ
ế
ế
n
n
khi
khi
s
s


run
run
c
c


a
a
F0

F0
l
l
á
á
1
1
th
th
ì
ì
d
d


ng
ng
Trương H
Trương H


i B
i B


ng
ng
-
-
C

C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
23
23
2.
2.
Phương
Phương
ph
ph
á
á
p
p
tr

tr


n
n
t
t


nhiên
nhiên
(
(
tt
t
t
)
)
A
1298765
B 1 2 9 7 5
C86
A' 1 2 8 9 6 7 5
Bước2
51 2 6 7 8 9A'
6 7C
51 2 8 9B
56 71 2 8 9
A
Bước1

Trương H
Trương H


i B
i B


ng
ng
-
-
C
C


u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2

24
24
2.
2.
Phương
Phương
ph
ph
á
á
p
p
tr
tr


n
n
t
t


nhiên
nhiên
(
(
tt
tt
)
)

A 1 2 6 7 8 9
5
B 1 2 6 7 8 9
C5
A' 1 2 5 6 7 8 9
T
T


i
i




c
c
3
3
ta
ta
th
th


y
y
r
r



ng
ng
file A
file A
đã
đã
đư
đư


c
c
s
s


p
p
x
x
ế
ế
p
p
v
v
à
à
k

k
ế
ế
t
t
th
th
ú
ú
c
c
.
.
Bước3
Trương H
Trương H


i B
i B


ng
ng
-
-
C
C



u tr
u tr
ú
ú
c d
c d


li
li


u 2
u 2
25
25
2.
2.
Phương
Phương
ph
ph
á
á
p
p
tr
tr



n
n
t
t


nhiên
nhiên
(
(
tt
tt
)
)
N
N
ế
ế
u
u


t
t


thu
thu



t
t
to
to
á
á
n
n
như
như
sau
sau
:
:
while (
while (
S
S


run
run
trong
trong
t
t


p
p

A >1)
A >1)
{
{
-
-
L
L


n
n




t
t
phân
phân
b
b


c
c
á
á
c
c

run
run
t
t


nhiên
nhiên
t
t


file A
file A
sang 2 file B
sang 2 file B
v
v
à
à
C
C
theo
theo
c
c
á
á
ch
ch

:
:
m
m


t
t
run sang B
run sang B
th
th
ì
ì
run
run
ti
ti
ế
ế
p
p
theo
theo
sang C, run
sang C, run
sau
sau
đ
đ

ó
ó
sang B,
sang B,
cho
cho
đ
đ
ế
ế
n
n
khi
khi
h
h
ế
ế
t
t
run
run
trên
trên
A.
A.
Như
Như
v
v



y
y
t
t


p
p
B
B
c
c
ó
ó
th
th


ch
ch


a
a
nhi
nhi



u
u
hơn
hơn
file
file
C
C
m
m


t
t
run.
run.
-
-
Ti
Ti
ế
ế
p
p
theo
theo
tr
tr



n
n
t
t


ng
ng
c
c


p
p
run
run
t
t


nhiên
nhiên
trên
trên
B
B
v
v
à
à

C
C
th
th
à
à
nh
nh
m
m


t
t
run
run
v
v
à
à
ghi
ghi
v
v
à
à
o
o
t
t



p
p
A.
A.
-
-
N
N
ế
ế
u
u
A
A
đã
đã
s
s


p
p
x
x
ế
ế
p
p

hay
hay
ch
ch


c
c
ó
ó
m
m


t
t
run
run
th
th
ì
ì
k
k
ế
ế
t
t
th
th

ú
ú
c
c
,
,
n
n
ế
ế
u
u
không
không
quay
quay
l
l


i
i
vòng
vòng
l
l


p
p

.
.
}
}

×