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
Bao Cao Mon Hoc: C TDL> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> 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> SVTH: Nguy n Dinh Hai
--------------- -
IV........................................................................................................ Danh giava nhn xet cua giao vien bq mon
--------------- -
Bao Cao Mon Hoc: C TDL> 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