Professional Documents
Culture Documents
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
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
--a:i---'
c-cc--
c::=====..-.1=;
I
., ,
Bao Cao DO An
,
'
y,...
.....
_,.
....
'
MVC LVC
LOI NOi DAU....................................................................................................... 3
PHAN I: LY THUYET & THUT TOAN VE RADIX SORT..........................4
l .Gi&i thiu
vS Radix Sort............................................................................................4
--
--
--
--
-Trang 2
---------------
- Trang
3
PHAN I
LY THUYET & THUT TOAN VE RADIX SORT
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;
--------------
-Trang 4
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:
1013 I 8421 I 1239 I 428 I 1424 I 1009 I 4518 I 3252 I 9110 I 999 I 1125 I 101
Trong 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 phc 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.
1013
701
I 8421 I
1239
I !!428 I
1424
1009
1125
I !!
9170
0701
3252
7013
0
1
2
3
Ta duqc mang B nhu sau:
9110
I 0101 I
3252
I 1013 I
-
1424
1725
8425
5
1424
4
8425
- Trang
S
1125
451
0428
6
I 0428 I 4518 I
1239
1009
0999
700
1239
9
I 0999 I
70!!9
0701
0
45 8
7013
1
0428
1725
84 5
1424
2
1239
3
3252
5
9170
7
0999
9
I
I
0101
I 1009 I
1013
I 4518 I
1424
8425
1125
I 0428 I
1239
I 3252 I
9110
I 0999
1009
I 1013 I 9110 I
1239
0428
8425
1424
4
I 3252 I
1424
418
5
1725
0101
7
1725
099
9
I 0999 I
1424
7013
7009
7
8425
8
9170
9
Kt luan
Giai thu t Radix Sort kh6ng dva tren Sl,f so sanh du li u nhu cac giai thu t sp
xp 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 6
+ 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
nhftt la khi kh6a sp xSp kh6ng qua dai so v6i s6 luqng phfrn
trong thvc tS).
ttr,
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.
--------------
-Trang 7
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++
1.GiOi thieu chuO'n2 trinh tren nn VB.Net
} Forml
l=l@ i..a..I
5334579528963019
I Ngau nhien ]
I
Ket qua sau khi sap xep la: 2896 - 3019 - 5334 - 5795 - 7055
Men u
l= I
. Forml
Mo file Ctrl+O
Lw file
Ctrl+S
Exit
Ctrl+X
li...a..I
7055
5334
( Sap xep J
5795
2896
3019
I Ngau nhien ]
Ket qua sau khi sap xep la: 2896 - 3019 - 5334 - 5795 7055
---------------
- Trang
8
'Dd Forml
MenuThong tin cht1ang trinh
Nh p
cac
tp gia tr!:52497671
Sap xep
53559254687
J
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 file
Thit 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
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 ThisList
Dim Bin(l) As ICollection(Oflnteger)
Bin(O) = New List(Of Integer) : Bin(l ) = New List(Of Integer)
For Each e As Integer In ThisList
Bin(Math.Abs(Clnt((e And (&H l << Depth)) >> Depth))).Add(e)
Next
Dim r As New List(Of Integer)
If Depth = 31 Then
If Bi n(l).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(l ), Depth - 1))
If Bin(O).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(O) , Depth - 1))
Else
If Bi n(O).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(O) , Depth - 1))
IfBin(l).Count > 0 Then r.AddRange(RecursiveRadixSort(Bin(l) , Depth - 1))
End If
Return r
End Function
------------
Trang 10
-------------
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) & " - ")
Next
Console.WriteLine()
B = RecursiveRadixSort( A, 31)
B.CopyTo(C , 0)
For i As Integer = 0 To 5
Console.Write(C(i) & " - ")
Next
End Sub
-------------
- Trang
II
luu.Items.Clear()
lbkq.Text = Nothing
Dim line, all As String
OpenFileDialogl .Filter = "Text (*.txt)I *.txt"
OpenFileDialogl .ShowDialog()
If OpenFileDialogl .FileName <> '"' Then
Try
FileOpen( l , OpenFileDialogl .FileName, OpenMode.Input)
Do Until EOF( l )
line = Linelnput(l)
all = all & line & vbCrLf
Loop
TextBox l.Text = all
TextBox l.Select(l , 0)
TextBox I.Enabl ed = True
Catch ex As Exception
MsgBox("L6i
file!")
Exit Sub
Finally
FileClose(l)
End Try
ma
Dim d = O
d = TextBox l.Lines(O) 'd chua cac gia tri trong textboxl
For 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 listbox
luu.Items. Add(TextBox l .Lines(i)) 'listbox l se add tlr vi tri thu i tlrc thu 2 trong
'text
tbl.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 = TextBox l.Lines(2) 'label kSt qua chu hang thu 1 trong file luu
Next
chuthich.Visible = True
End If
End Sub
--------------
-Trang 1 2
E:\Dropbox\Public\CTDLGT\Do_an\giaithuat_radixsort\bin\Debug\giaithuat_radixsort.exe
y ttrang cho day cac the sau d6 sap xep cac the nay
{
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
----------Trang 15 ----------
}
}
{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
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;
}
-------------
- Trang 17--------------
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.
---------------
- Trang
18
---------------
- Trang
20
----------------Trang 21