You are on page 1of 21

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
., ,

Bao Cao DO An
,

Mon: Cau true dfr Iiu & giai thut

'

y,...
.....

_,.

....

DE TAI: Trinh bay thut toan sp xp Radixsort


Giang vien hmrng din : Trinh Due Tinh
Sinh vien thyc hin : Nguyn Dinh Hai Quan
: Cl OTl
L6p
MSSV
: 100157

'

Da Nng, Ngay 25 thang I nam 20 I 3

Bao Cao Mon Hoc: CTDL&GT


Quan

SVTH: Nguy n Dinh Hai

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

--

--

--

--

-Trang 2

LOI NOI DAU


Khai nim sp xSp du0ng nhu da gn lin v&i xa h(>i loai nguai tir thu& ban du
cua nn van mi nh. 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
3

PHAN I
LY THUYET & THUT TOAN VE RADIX SORT

1.Gioi thieu v Radix Sort


Radix 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 da tren nguyen tc phan loi thu
cua buu
din. 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 thc 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 xp Radix sort.


C6 nhi u thut toan sip xSp Radix sort nhu Insertion Sort, Merge Sort, Counting
sort. Trong bai chi thc hin theo kiSu Counting Sort (Sip xSp dSm phan ph6i). Vi n6
thc hin sp xSp khong da tren cac thao tac so sanh
Trong bai Mo cao chi d cp dSn thut toan Counting
sort. Cac bu6c thc 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;
--------------

-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

I 4518 I 3252 I 9110 I !!999 I

1125

I !!

Phan 16 theo hang don vi:

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

Phan 16 theo hang chuc:

70!!9
0701
0

45 8
7013
1

0428
1725
84 5
1424
2

1239
3

3252
5

9170
7

0999
9

Ta duqc ming B nhu sau:

I
I

0101

I 1009 I

1013

I 4518 I

1424

8425

1125

I 0428 I

1239

I 3252 I

9110

I 0999

Phan 16 theo hang tram:


7013
3252
7.Q09 9 70
139
0
1
2
Ta duqc mang B nhu sau:

1009

I 1013 I 9110 I

1239

0428
8425
1424
4

I 3252 I

1424

418
5

1725
0101
7

I 8425 I 0428 I 4518 I 0101 I

1725

099
9

I 0999 I

Phan 16 theo hang nghin:


0999
1725
0701
1424
0428
1239
3252
4518
2
4
0
1
3
5
Ta duqc mang B da sap xep hoan thanh nhu sau:

I 0428 I 0101 I 0999 I 1239 I


9110 I
4.

1424

7013
7009
7

8425
8

9170
9

I 1125 I 3252 I 4518 I 1009 I 1013 I 8425 I

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,

ttr (dieu nay thuc'Jng gp

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

Bao Cao Mon Hoc: CTDL&GT


Quan

SVTH : N guy n Dinh H ai

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

MenuThong tin chuang trlnh

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

Nh p cac tp gia tr!: 7055

5334579528963019

I Ngau nhien ]
I

I Sap xep 1 1 Xoa man hinh

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

Men u

Thong tin chuang trlnh

l= I

. Forml
Mo file Ctrl+O
Lw file

Ctrl+S

Exit

Ctrl+X

li...a..I

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

., ___ -..r ia tr!:

7055

5334

( Sap xep J

5795

2896

3019

I Ngau nhien ]

I Xoa man hinh I

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

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

- Trang
8

Bao Cao Mon Hoc: CTDL&GT


Quan

SVTH: Nguy n Dinh Hai

'Dd Forml
MenuThong tin cht1ang trinh

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

Nh p

cac

tp gia tr!:52497671

Tim hiu chU'O'ng trinh:

Sap xep

53559254687
J

Xoa man hinh

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

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
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

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 Integer
SaveFileDialogl.Filter = "Text File (*.txt) I *.txt"
SaveFileDialog 1.ShowDialog()
If SaveFileDialogl .FileName <> "" Then
Try
FileOpen(l , SaveFileDialogl.FileName , OpenMode.Output)
PrintLine(l , 4) 'in ra dong so 1 trong file txt dS: kiem tra so phan tu co trong
listbox
PrintLine(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 file
PrintLine(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
Next
PrintLine(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: CTDL&GT


Quan

SVTH: Nguy n Dinh Hai

2. Chrrong trinh minh hoa bing C++


I

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

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

Y hrang: Chuang trinh duqc viet tren


theo thu u,r tang dfrn
a.Vit ma
T:;to ham radixsort
void RadixSort(int *a,int n)

y ttrang cho day cac the sau d6 sap xep cac the nay

Bao Cao Mon Hoc: CTDL&GT

SVTH: Nguyn Dinh Hai Quan

{
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: CTDL&GT


Quan

SVTH: Nguy n Dinh Hai

}
}

Trang ham main ta t?o cac gia tri


int mai n()

de sir dl,lng ham nhu sau:

{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.

Da Nng, ngay 29 thang 12 nam


2012.
Sinh vien th\l'C hin

Nguyn Dinh Hai Quan

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

- Trang
18

IV........................................................................................................ Danh gia


va nhn xet cua giao vien bq mon

v. Thong Tin Khac


Trong bai lam c6 su d\mg ngu6n tir nhiu ngu6n khac nhau C\l thS:
Tuyn tap d6 an t6t nghiep sinh vien Thanh H6a
Edison - Blog Archive Sftp xp dua tren ca s6
-Radix sort Recursive Radix Sort - VB.NET I
DreamlnCode.net
Radix 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

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

- Trang
20

----------------Trang 21

You might also like