32
rEF=fitF======- --a:i---' c-cc-- c::=====..-.1=; B(> GIAO nvc vA DAO T o TRU'ONG CAO DANG CN & KD VJT TIEN KHOA MAY TINH I v y ,... ., , Bao Cao DO An , Mon: Cau true dfr Iiu & giai thu t ' v V y _, . ..... ... . A A A A DE TAI: Trinh bay thut toan sp xp Radixsort Giang vien hmrng din : Trinh Due Tinh Sinh vie n thy·c hin : N guyn Dinh Hai Quan L6p : Cl OTl MSSV : 100157

Cấu Trúc Dữ Liệu Và Giải Thuật - Trình Bày Thuật Toán Sắp Xếp Radixsort - Luận Văn, Đồ Án, Đề Tài Tốt Nghiệp

  • Upload
    huykhtn

  • View
    250

  • Download
    0

Embed Size (px)

DESCRIPTION

trình bày

Citation preview

rEF=fitF======- --a:i---' c-cc-- c::=====..-.1=;B(> GIAO nvc vA DAO T o

TRU'ONG CAO DANG CN & KD VJT TIEN

KHOA MAY TINH

I

vy,...

., ,Bao Cao DO An

,Mon: Cau true dfr Iiu & giai thut

'

vVy_,.

..... ....A AA A

DE TAI: Trinh bay thut toan sp xp Radixsort

Giang vien hmrng din : Trinh Due Tinh

Sinh vien thy·c hin : Nguyn Dinh Hai Quan

L6p : Cl OTl

MSSV : 100157

'Da Nng, Ngay 25 thang I nam 20 I 3

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

- -- -- -- -- -Trang

MVC LVC

LOI NOi DAU.........................................................................................................3

PHAN I: LY THUYET & THUT TOAN VE RADIX SORT.........................4

l .Gi&i thiu vS Radix Sort............................................................................................4

2.M6 phong qui trinh......................................................................................................4

3. Thut toan sp xp Radix sort........................................................................5

4. Kt lun..................................................................................................6

5. Danh gia d9 phuc tp giai thut......................................................7

PHAN II CHUONG TRINH MINH HO TRVC QUAN RADIX SORT.............8

l .Gi&i thiu chuong trinh tren nSn VB.Net...............................................................8

Tim hiSu chuong trinh:...................................................................................................9

Thit k chuong trinh:...........................................................................................9

a.Vit ma..............................................................................................................10

2. Chuong trinh minh ho bing C++...................................................................14

PHAN III. KET LUN..................................................................................18

PHAN IV.DANH GIA & NN XET CUA GV.............................................19

--------------- -

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

LOI NOI DAUKhai nim sp xSp du0ng nhu da gn lin v&i xa h(>i loai nguai tir thu& ban du

cua nn van minh. N6 dan gian thS hin trong vic sp hang, trong vic phan cong cong

vic,... Ngay nay, trong m(>t thS gi&i ma khoa hQc cong ngh m6i ngay phat triSn nhu VU. bao va nhu du khai tMc, tim kiSm thong tin cua con nguai ngay cang cao thi vic nang

cao tinh hiu qua cua cac giai thu?t sp xsp ciing ngay cang tro nen quan tr9ng.

Trong hu hSt cac h luu trfr, quan ly du liu thao tac tim kiSm la thao tac CO' ban dS khai thac thong ti n. DS vic tim kiSm tr& nen hiu qua va nhanh ch6ng thi du liu

trong M th6ng dn duqc t6 chuc theo m9t tr?t tv nao do va di u nay doi hoi chung ta phai xay d\l'llg nhfrng giai thu?t sp xSp thf ch hqp.

Bai bao cao nay nhm ml)c df ch gi&i thiu v Radix Sort, m(>t giai thu?t sp xSp

dc bi t vi n6 gn giflng each sp xSp theo lo cua ma chung ta vn hay lam trong CUQC

s6ng hng ngay.

Hy v9ng nh?n duqc nhfrng nh?n xet va danh gia chan thanh tir thy va cac bc;in.

-------------- -Trang

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

PHAN I

LY THUYET & THUT TOAN VE RADIX SORT

1.Gioi thieu v Radix SortRadix Sort la m9t thut toan sp xSp tiSp cn theo m9t hu6ng hoan toan khac so

v6i cac thut toan khac. NSu nhu trong cac thut toan khac, CCY s& dS sp xSp lu6n la

vic so sanh gia tri cua 2 phftn ru thi Radix sort li dµa tren nguyen tc phan loi thu cua buudin. N6 kh6ng h quan tam dSn vic so sanh gia tri cua phftn Ur va ban thiin vic

phan loi va trinh tl,1' phan loi se to ra thu tl,1' cho cac phftn Ur.Ta biSt rng, dS chuySn m9t kh6i luqng thu Ion dSn tay ngu<'Yi nhn & nhiu dia

phuang khac nhau, buu din thu<'Yng t6 chuc m9t h th6ng phan loi thu phiin dp.

Tru6c tien, cac thu dSn cung m9t tinh, thanh ph 6 se dugc sp chung vao m9t 16 cts

giri ctsn tinh thanh tuang l'.rng. Buu din cac tinh thanh nay li thµc hin c6ng vic

tuang tl,1'. Cac thu ctsn cung m9t qun, huyn se dugc xSp vao chung m9t 16 va giri

ctsn qun , huyn tuang ung. Cu nhu vy, cac buc thu se dugc trao dSn tay ngu<'Yi nhn

m9t each c6 h thong ma c6ng vic sp xSp thu kh6ng qua nng nh9c.

2.Mo phong qui trinh- Tru6c tien, ta c6 thS gia sir m6i phftn ru ai trong day al , a2, ..., an la m9t s6

nguyen c6 t6i da m chii s6.

- Ta phiin loi cac phftn Ur lftn lugt theo cac chii s6 hang dan vi, hang Ch\lC, hang tram, . tuang tl,1' vic phan loi thu theo tinh thanh, qun huyn, phu<'Yng xa, ..

3.Thuat toan sip x p Radix sort. C6 nhi u thut toan sip xSp Radix sort nhu Insertion Sort, Merge Sort, Counting

sort. Trong bai chi thµc hin theo kiSu Counting Sort (Sip xSp dSm phan ph6i). Vi n6

thµc hin sp xSp khong dµa tren cac thao tac so sanh

Trong bai Mo cao chi d cp dSn thut toan Counting

sort. Cac bu6c thµc hin thut toan nhu sau:

Bmrc l :II k cho bi St chii s6 dung dS phan loi hin

hanh k = O; II k = O: hang dCYn vi; k = I :hang ch\lc;

- -

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

Bml'c 2 :

//T<;to cac 16 chua cac lo<;ti phcln tU khac nhau

Kh&i t<;to 10 16 BO, Bl , ., B9 r6ng;

BU'O'C 3 :For i = 1 .. n do

Di;it ai vao 16 Bt v6i t = chfr s6 thu k cua ai;

BU'o'c 4 :

Nbi BO, Bl , ., B9 l<;ti (theo dung trinh t\f) thanh a.

BU'o'c 5 :

k = k+ l;Neu k < m thl tr& l<;ti bu6c 2.

Nguqc l<;ti: Dirng

Vi d\J:

Ta co mang B g6m cac phftn tU nhu sau:

I 1013 I 8421 I 1239 I 428 I 1424 I 1009 I 4518 I 3252 I 9110 I 999 I 1125 I 101Trong Radix Sort se co m<)t diSu kh6ng thun tin Ia danh sach cac s6 nguyen vi trong

danh sach y co ths co cac s6 nguyen co chisu dai kh6ng bing nhau .

DS khiic phµc diSu nay ta them chfr s6 0 vao phia tru6c cac chfr s6 ngiin dS duqc

mang cac phcin rn co chung chisu dai bing nhau Ia 4.

Mang B sau khi them cac chfr s6 0.

I 1013 I 8421 I 1239 I !!428 I 1424 I 1009 I 4518 I 3252 I 9110 I !!999 I 1125 I !!701 I

Phan 1 6 theo hang don vi:

09991725 451 700

9170 0701 3252 7013 1424 8425 0428 12390 1 2 3 4 5 6 7 8 9

Ta duqc mang B nhu sau:

I 9110 I 0101 I 3252 I 1013 I 1424 I 8425 I 1125 I 0428 I 4518 I 1239 I 1009 I 0999 I

- - - -- -Trang

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

Phan 1 6 theo hang chuc:

04281725

70!!9 45 8 84 50701 7013 1424 1239 3252 9170 0999

0 1 2 3 4 5 6 7 8 9

Ta duqc ming B nhu sau:

I 0101 I 1009 I 1013 I 4518 I 1424 I 8425 I 1125 I 0428 I 1239 I 3252 I 9110 I 0999

I

Phan 1 6 theo hang tram:

04287013 3252 8425 17257.Q09 9 70 139 1424 418 0101 099

0 1 2 3 4 5 6 7 8 9Ta duqc mang B nhu sau:

I 1009 I 1013 I 9110 I 1239 I 3252 I 1424 I 8425 I 0428 I 4518 I 0101 I 1725 I 0999 I

Phan 1 6 theo hang nghin:

0999 17250701 1424 70130428 1239 3252 4518 7009 8425 9170

0 1 2 3 4 5 6 7 8 9Ta duqc mang B da sap xep hoan thanh nhu sau:

I 0428 I 0101 I 0999 I 1239 I 1424 I 1125 I 3252 I 4518 I 1009 I 1013 I 8425 I 9110 I

4.K t luan

Giai thu t Radix Sort kh6ng dva tren Sl,f so sanh du li u nhu cac giai thu t sp

x€p khac. V6i m6i s6 nguyen rir dfr li u se c6 hai hanh d(mg duqc thvc thi.

+ Thvc hin phep chia lfty nguyen cho 1 h s6 dS lfty phftn chfr s6 d va cac chfr s6

trn6c n6 (bo cac chu s6 sau n6).

-------------- -Trang

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

+ Thi;rc hin phep chia lfty du cho 10 d lfty ra chu s6 d (b6 cite chu s6 tru6c d).

s. Danh gia do phrrc tap giai thuat

V6i m9t day n s6, m6i s6 c6 tbi da m chfr s6, thut toan thvc hin m lfrn cac thao tac

phan 16 va gh6p 16. Trong thao tac phiin 16, m6i phfrn ttr chi duqc xet dung m9t lfrn, khi gh6p cilng vy.

Sau lfrn phan phbi thu k cac phfrn ttr cua A vao cite 16 BO, Bl , ., B9, va lfty nguqc trcr ra, nSu chi xet dSn k+1 chu s6 cua cite phfrn tlr trong B, ta se c6 m9t mang tang dfrn

nhc'J trinh ti;r lfty ra rir 0 -> 9. Nhn xet nay bao dam tinh dung dn cua thut toan

Thut toan c6 d9 phuc tp tuySn tinh nen hiu qua khi sp day c6 rftt nhieu phfrn ttr, nhftt la khi kh6a sp xSp kh6ng qua dai so v6i s6 luqng phfrn ttr (dieu nay thuc'Jng gp trong thvc tS).

Thut toan cai dt thun tin v6i cite mang v6i kh6a sp xSp la chu6i (l<Y tv hay s6)

han la kh6a s6 nhu trong vi d\l.

Bao Cao Mon Hoc: C TDL&GT SVTH : N gu y n Dinh H a i

--------------- -

1.GiOi thieu chuO'n2 trinh tren nn VB.Net•} Forml

MenuThong tin chuang trlnh

Chtrong Trinh :Minh Hoi.t Trtfc Quan Slip X p Radix Sort

l=l@ i..a..I

Nh p cac tp gia tr!: 7055 5334579528963019 INgau nhien ]

I Sap xep 1 1 Xoa man hinh I

Ket qua sau khi sap xep la: 2896 - 3019 - 5334 - 5795 - 7055

PHAN II

CHUONG TRINH MINH HOA TRUC QUAN RADIX SORT

Trong bai bao cao c6 su dl,lng 2 chmmg trinh minh ho duqc viSt bing 2 ng6n ngu la:VB.Net va C++

•. Forml

tng Trinh Minh Hoi.t Trtfc Quan Slip X p Radix Sort

• ., ___ •-..r ia tr!: 7055 5334 5795 2896 3019

( Sap xep J I Xoa man hinh I

Ket qua sau khi sap xep la: 2896 - 3019 - 5334 - 5795 - 7055

l= I® li...a..I

I Ngau nhien ]

-

Men u J Thong tin chuang trlnh

Mo file Ctrl+O

Lw file Ctrl+S

Exit Ctrl+X

Bao Cao Mon Hoc: CTDL&GT SVTH: Nguy n Dinh Hai

'Dd FormlMenuThong tin cht1ang trinh

ChtrO'ng Trinh Minh Hol}. Trl!C Quan Sp Xp Radix Sort

Nh p cac tp gia tr!:52497671 53559254687

I Sap xep J I Xoa man hinh

--------------- -

Tim hiu chU'O'ng trinh:

Chuang trinh duqc hlnh thanh dva tren y tm'mg la cho 1 tp cac s6, sau d6 sp xSp cac

day s6 do theo thu tv ru be ctsn tan, v&i cac chuc nang tuu ma fileThit k chU'O'ng trinh:Cac thu(>c tinh thay d6i nhau sau:

-5 textbox: thu(>c tinh name la tbl , tb2, tb3, tb4, tb5

- Nut ngiu nhien: Thu(>c tinh name la btnn

- Nut sp xSp: Thu(>c tinh name la nutbaocao

- Menu: Thu(>c tinh name la f_menu

- Listbox: Thu(>c tinh name la cacgiatri

- - Trang 10 -

Bao Cao Mon Hoc: CTDL&GT SVTH: Nguy n Dinh Hai

a.Vit ma

Phfin nay chi dS cp dSn cac ham chinh trong chuang trinh.

KhOi to ham sip xp Radixsort: ham nay dung tinh chfit d qui. Trong d6 ThisList la ngu6n dn sp xSp, Depth la s6 Ifin d qui

Public Function RecursiveRadixSort(ByRef ThisList As ICollection(Oflnteger) , _ ByVal Depth As Integer) As ICollection(Oflnteger)

IfDepth < 0 Then Return ThisListDim Bin(l) As ICollection(Oflnteger)Bin(O) = New List(Of Integer) : Bin(l ) = New List(Of Integer)

For Each e As Integer In ThisListBin(Math.Abs(Clnt((e And (&H l << Depth)) >> Depth))).Add(e)

NextDim r As New List(Of Integer)

If Depth = 31 ThenIf Bin(l).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(l ), Depth - 1)) If Bin(O).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(O) , Depth - 1))

ElseIf Bin(O).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(O) , Depth - 1)) IfBin(l).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(l) , Depth - 1))

End IfReturn r

End Function

- -

Bao Cao Mon Hoc: CTDL&GT SVTH: Nguy n Dinh Hai

KhOi to ham RunO: ham nay c6 tac gan cac gia tri vao mang A sau d6 gQi ham sp xep, trong do nO,nl,n2 ,n3,n4 1a cac gia tri duqc truySn tir o textbox ngoai form chinh

Public Sub Run()Dim A() As Integer = {nO, nl , n2, n3, n4} Dim B As TCollection(Of Integer)For i As Integer = 0 To 4

Console.Write(A(i) & " - ")

NextConsole.WriteLine()B = RecursiveRadixSort( A, 31) B.CopyTo(C , 0)For i As Integer = 0 To 5

Console.Write(C(i) & " - ")

Next

End Sub

s.._.·kin form load ta to cac gia tr! sau:

Private Sub f_main_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

tbl .Text = Nothing tb2.Text = Nothing tb3.Text = Nothi ng tb4.Text = Nothing tb5.Text = Nothing luufile.Enabled = False

End Sub

To chrrc nang mfr file

Private Sub McrFileToolStripMenultem_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles motile.Click

Dim i As Integer

-------------- -Trang

Bao Cao Mon Hoc: CTDL&GT SVTH: Nguy n Dinh Hai

luu.Items.Clear() lbkq.Text = Nothing Dim line, all As StringOpenFileDialogl .Filter = "Text (*.txt)I *.txt" OpenFileDialogl .ShowDialog()If OpenFileDialogl .FileName <> '"' Then

TryFileOpen( l , OpenFileDialogl .FileName, OpenMode.Input) Do Until EOF( l )

line = Linelnput(l)all = all & line & vbCrLf

LoopTextBox l.Text = all TextBox l.Select(l , 0) TextBox I.Enabl ed = True

Catch ex As Exception MsgBox("L6i ma file!")

Exit Sub Finally

FileClose(l) End Try

Dim d = Od = TextBox l.Lines(O) 'd chua cac gia tri trong textboxlFor i = 2 To d + 2 ' i=2 vi gia tri 0 v&i 1 kh6ng phai la gia tri trong listbox ma la:

·s6 o kSt qua va s6 1 la ph n ru trong listboxluu.Items. Add(TextBox l .Lines(i)) 'listbox l se add tlr vi tri thu i tlrc thu 2 trong

'texttbl.Text = TextBox l.Lines( l O) ' lay gia tri add Jen tb2.Text = TextBoxl.Lines( l 1) ' lay gia tri add len tb3.Text = TextBox 1.Lines( 12) ' lay gia tri add Jen tb4.Text = TextBox I .Lines( 13) ' lay gia tri add ten tb5.Text = TextBox l .Lines(14) ' lay gia tri add len

lbkq.Text = TextBoxl.Lines(2) 'label kSt qua chu hang thu 1 trong file luu Nextchuthich.Visible = True

End IfEnd Sub

Bao Cao Mon Hoc: CTDL&GT SVTH: Nguy n Dinh Hai

-------------- -Trang

To chfrc nang cho menu IU'u file:Private Sub LuuFileToolStripMenultem _Click(ByVal sender As System.Object ,_ ByVal e As System.EventArgs) Handles luufile.Click

Dim j As IntegerSaveFileDialogl.Filter = "Text File (*.txt) I *.txt" SaveFileDialog 1.ShowDialog()If SaveFileDialogl .FileName <> "" Then

TryFileOpen(l , SaveFileDialogl.FileName , OpenMode.Output)PrintLine(l , 4) 'in ra dong so 1 trong file txt dS: kiem tra so phan tu co trong

listboxPrintLine(l , "In ra ket qua sau khi sap xep")PrintLine(J , lbkq.Text) 'in ra dong so 2 trong file txt dS: kiem tra ket qua de

xuat ra label khi load filePrintLine(l, "Thu tu da sap xep de dua vao tung o textbox") For j = 0 To 4

PrintLine(l , luu.Items(j)) 'xuat gia tri ra file txt tir listbox danh sach NextPrintLine(l , "cac gia tri ban dau") For j = 0 To 4

PrintLine(l , cacgiatri.Items(j)) 'xuat gia tri ra file txt tir listbox danh sach Next

Catch ex As Exception

MsgBox("Loi khi ghi !") Finally

FileClose( 1)

End Try End If

End Sub

Bao Cao Mon Hoc: C T D L&GT SVTH: Nguy n Dinh Hai

I E:\Dropbox\Public\CTDLGT\Do_an\giaithuat_radixsort\bin\Debug\giaithuat_radixsort.exe

2. Chrro·ng trinh minh hoa bing C++

E:\Dropbox\Public\CTDLGT\Do_an\giaith uat_radixsort\bin\Debug\giaithuat_rad ixsort.exe

Y hrang: Chuang trinh duqc viet tren y ttrang cho day cac the sau d6 sap xep cac the nay theo thu u,r tang dfrna .V i t ma T:;to ham radixsortvoid RadixSort(int *a,int n)

Bao Cao Mon Hoc: CTDL&GT SVTH: N guyn Dinh Hai

{

int i,b[MAX],m=O,exp= 1;

for(i=O;i<n;i++)

{if(a[i]>m)

m=a[i];

}

while(m/exp >O)

{

int bucket[I O]=

{O};

for(i=O;i<n;i++)

bucket[ a[i]/exp% 1O]++;

for(i=l ;i<l O;i++)

bucket[i]+=bucket[i-1 ];

for(i=n-1;i>=O;i--)

b[--bucket[a[i]/exp%1O]]=a[i];

for(i=O;i<n;i++)

a[i]=b[i];

exp*= lO;

#ifdef SHOWPASS

cout<<"\nSap xep: ";

print(a,n);

#endif

----------Trang 15 ----------

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

}

}

Trang ham main ta t?o cac gia tri de sir dl,lng ham nhu sau:

int mai n()

{int k;

do {

int arr[MAX];

cout<<"\n..::Nhan 1 de nhap the, nhan 2 de nhap ngau nhien, nhan 0 de thoat: \n";

cin>>k;

if (k=l){

int i ,n;

printf("Nhap so luong the can sap xep max 5 the: (n < %d) : ",MAX);

scanf("%d",&n);

printf("Nhap the sau do an enter de sang the moi:\n",n);

for(i=O;i<n ;i++)

cin>>arr[i];

printf("\nMang vua nhap la : ");

print(&arr[O],n);

Radix Sort(&arr[O],n);

printf("\nKet qua sau khi sap xep : ");

---------------Trang 16

- - Trang 17-------------- -

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

print(&arr[O],n);

printf("\n");

}

if (k=2){

int i ;

srand ( time(NULL) ); //dung de tao ham random for(i=O;i<5;i+

+)

{ arr[i]=rand();}

printf("\nMang vua tao ngau nhien la : ");

for(i=O;i<5;i++)

cout<<arr[i]<<" ";

cout<<"\n";

RadixSort(&arr[0],5);

cout<<"\n";

printf("\nKet qua sau khi sap xep : ");

print(&arr[0] ,5);

printf("\n\n");

}

} while(k>O);

return O;

}

--------------- -

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

III. Kt Lun

V&i nhfing kiSn thuc da h<;>c , v&i SlJ giup do tn tinh cua cac anh chi tren din dan c<'.)ng d6ng C vit, cling giao vien b9 m6n em da thu tMp duqc nhfmg kinh nghim hSt

sue quy Mu.

KSt hqp cling v&i kiSn thuc da duqc trang bi tren l&p em da c6 m<'.)t s6 suy nghI nhm hoan thin dS tai da giao.

Tuy nhien v&i trinh d9 thvc tin con h:;m chS va m<'.)t s6 kh6 khan gp phiii trong luc thvc hin dS tai nen cfing kh6ng thS tranh kh6i nhfrng thiSu s6t em nit mong nhn duqc sv y kisn dong g6p ru thiy ds ds tai cua em duqc hoan thin han.

Em xin chan thanh cam cm thfty Trinh Due Tinh da hu&ng dftn cho em hoan thanh db an nay. Kinh chuc thfty sue khoe d6i dao va dt duqc nhiSu thanh tich trong c6ng vic.

Da Nng, ngay 29 thang 12 nam 2012.

Sinh vien th\l'C hin

Nguyn Dinh Hai Quan

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

--------------- -

IV........................................................................................................ Danh giava nhn xet cua giao vien bq mon

--------------- -

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai

v. Thong Tin KhacTrong bai lam c6 su d\mg ngu6n tir nhiu ngu6n khac nhau C\l thS:Tuy€n tap d6 an t6t nghiep sinh vien Thanh H6a Edison - Blog Archive » Sftp x p dua tren ca s6 - Radix sort Recursive Radix Sort - VB.NET I DreamlnCode.netRadix Sort -C ++ I DreamlnCode.net Cau lac bo Visual Basic . NET va C # (VB.NET & C # ) Du an & Source code VC ++ - Cong d6ng C Viet

-----------------

Bao Cao Mon Hoc: C TDL&GT SVTH: Nguy n Dinh Hai