You are on page 1of 29

BO CO THC TP C

S
TI: TM HIU MT S THUT TON
SP XP
Sinh vin thc hin: Trn nh Nguyn
Gio vin hng dn: V Th Thy
Tho

1.Ni dung chnh


Mt s kin thc c bn.
Mt s thut ton sp xp.
Tm hiu ngn ng Java.
Demo chng trnh.

2.Mt s kin thc c bn


Thut ton:
Khi nim thut ton sp xp:
Thut ton l mt tp hu hn cc ch th hay
phng cch c nh ngha r rng cho
vic hon tt mt s vic t mt trng thi ban
u

cho trc; khi cc ch th ny c p

dng trit

th s dn n kt qu sau cng

nh d on.

Khi nim thut ton


sp xp.
Sp xp (sort) l mt qu trnh bin
i mt danh sch cc i tng
thnh mt danh sch tha mn mt
th t xc nh no .

3.Mt s thut ton sp xp


3.1. Sp xp chn(Selection
Sort)
3.1.1. T tng
u tin chn phn t c kha nh nht
trong n phn t a[1] n a[n] v hon v
vi phn t a[1].
Chn phn t c kha nh nht trong n-1
phn t t a[2] n a[n] v hon v n vi
a[2]
bc i, chn phn t c kha nh nht
trong n-i+1 phn t t a[i] n a[n] v hon
v n vi a[i].

3.1.2. Thut ton


Procedure SelectionSort;
Var I,j,k: integer;
min: Real;
Begin
for i:=1 to n-1 do
Begin
k:=1; min:= a[i];
for j:=i+1 to n do
If a[j]<min then
Begin
min:= a[j];
k:=j;
End;
Swap(a[i],a[k]);
End;
End;

3.1.3. phc tp ca thut ton

T(n)=O(n2)

3.1.4. V d
Ban u: 5

10

12

10

Bc 1: 2|

10

12

10

Bc 2: 2

2|

10

12

10

Bc 3: 2

3|

10 12

10

10 12

10

Bc 4: 2

5|

Bc 5: 2

6|

12 9

10 9 10

Bc 6: 2

9| 12

10 9 10

Bc 7: 2

Bc 8: 2

Bc 9: 2

5
5

9|

10 12 10

9 10| 12 10

10

10

12

3.2. Sp xp chn(Insretion
Sort).
3.2.1. T tng
Ly dn tng phn t t dy ngun, chn vo dy
ch sao cho m bo dy ch c th t.
Bc 1: Chn phn t a[2] vo danh sch c th
t a[1] sao cho a[1], a[2] l mt danh sch c th t.
Bc i: Chn phn t a[i+1] vo danh sch c th
t a[1], a[2],a[i] sao cho a[1], a[2], a[i+1] l mt
danh sch c th t.

3.2. Thut ton


Procedure InsertionSort;
Var i,j: Integer;
Begin
For i:=2 to n do
Begin
j:=i;
While (j>1) anh (a[j]<a[j-1]) do
Begin
Swap (a[j],a[j-1]);
j:=j-1;
End;
End;
End;

3.3. phc tp
T(n)=O(n2)

3.4. V d
Ban u: 5 6 2 2 10 12 9 10 9 3
Bc 1: 5 6
Bc 2: 2 5 6
Bc 3: 2 2 5 6
Bc 4: 2 2 5 6 10
Bc 5: 2 2 5 6 10 12
Bc 6: 2 2 5 6 9 10 12
Bc 7: 2 2 5 6 9 10 10 12
Bc 8: 2 2 5 6 9 9 10 10 12
Bc 9: 2 2 3 5 6 9 9 10 10 12

3.3. Sp xp ni bt(Buble Sort)


3.3.1. T tng
Bc 1: Xt cc phn t t a[n] n a[2], vi mi phn
t a[j] so snh n v kha ca phn t a[j-1]. Nu
kha ca a[j] nh hn kha ca a[j-1] th i ch

a[j]

vi a[j-1].
Bc 2: Xt cc phn t t a[n] n a[3], lm tng t
bc 1.
Bc i: Xt cc phn t t a[n] n a[i+1], lm tng
t
Sau n bc ta c dy c th t.

3.3.2. Thut ton


Procedure BubbleSort;
Var i,j: integer;
Begin
1. For i:=1 to n do
2. For j:=n downto i+1 do
3.
if(a[j]<a[j-1]) then
4.
Swap(a[j],a[j-1]);
End;

3.3.3. phc tp
T(n)=O(n)

3.3.4. V d
Bt u
Bc 1
3
Bc 4
5
2
6
5
2
2
2
6
5
3
2
2
6
5
10
3
3
6
12
10
9
9
9
12
10
9
10
9
12
10
3
9
10
10

Bc 2
2

2
3
5
6
9
9
10
12

Bc
2

3.4. Sp xp nhanh(Quick
Sort)
3.4.1. T tng
Xt mng A c cc bn ghi t a[1],,a[n].
Chn mt thnh phn ca mng lm
cht(Pivot). Phn hoch mng thnh hai phn
bng cch chuyn tt c cc thnh phn c
kha ln hn cht sang phi cht, cc thnh
phn c kha b hn hoc bng cht sang tri
cht.
Sp xp c lp hai mng con a[1,k-1], a[k+1,
n] bng cch gi quy thut ton trn.

3.4.2. Thut ton


Procedure QuickSort(i,j : integer);
Var k: integer;
Begin
If(i<j) then
Begin
Partition(i,j,);
QuickSort(i,k-1);
QuickSort(k+1,j);
End;
End;

Procedure Partition(i,j: integer; var R:real);


Var L: integer;
P: kiu phn t mng;
Begin
P:=A[i]; L:=I; R:=j+1;
Repeat L:=L+1 util (A[L] > p) or (L>j);
Repeat R:=R-1 util A[R] <= p;
While L < R do
Begin
Swap(A[L],A[R]);
Repeat L:=L+1 util A[L] > p;
Repeat R:=R-1 util A[R] <= p;
End;
Swap(A[i],A[R]);
End;

3.4.3. phc tp
T(n)=O(n)

3.4.4. V d

10

15

11

14

ly cht

p=A[1]=10,L=1,R=9
Ln th nht: Ta c L=2 v R=7
6

11

15

11

10

14

Khi L=6,R=5
10

15 14

Khi L=4, R=6.


6

10

11

15

14

3.5. Sp xp vun
ng(Heap Sort)
3.5.1. T tng
Heap l mt cy nh phn y tri m mi
nt c gn mt gi tr kha sao cho gi tr
kha nt cha bao gi cng nh hn hoc
bng gi tr kha hai nut con. Do trong
Heap ta c:
Nt gc c kha b nht
Dy kha nhn c khi i theo mt ng
bt k l dy c th t tng dn

3.5.2. Thut ton


Procedure PUSHdOWN(a,b:integer);
Var i,j: integer;
ok: Boolean;
Begin
i:=a; ok:= false;
1. While (i<=b div 2) and not ok do
Begin
2. If i=b div 2 then j:=2*i { ch c con tri }
else if A[2*i] < A[2*i+1] then j:=2*i
else j:=2*i+1;
3. If A[i] > A[j] then
Begin
Swap(A[i],A[j]);
i:=j;
End;
else ok:=true;
End;
End;

S dng PUSHDOWN trong th tc HEAPSORT. Kt


qu c mng A[1n] xp gim dn.
Procedure HEAPSORT;
Var i: integer;
Begin
1. for i:=n div 2 downto 1 do PUSHDOWN(i,n);
{ bin i mng A[1..n] thnh mng Heap}
2. for i:=n downto 2 do
Begin
Swap(A[1],A[i]); //i ch gc
PUSHDOWN(1,i-1); //vun li ng
End;
End;

3.5.3. phc tp
T(n)=O(nlogn)

3.5.4. V d

2,3,5,6,4,1,5

Vun cy gc A[3] c mng A={2,3,7,6,4,1,5}


Vun cy gc A[2] c mng A={2,6,7,3,4,1,5}
Vun cy gc A[1] c mng A={7,6,5,3,4,1,2}
By gi A={7,6,5,3,4,1,2} l ng.
Sp xp
i ch A[1] vi A[7]: A={2,6,5,3,4,1,7} v vun li mng
A={6,4,5,3,2,1,7}.
i ch A[1] vi A[6]: A={1,4,5,3,2,6,7} v vun li mng
A={5,4,2,3,1,6,7}
i ch A[1] vi A[5]: A={1,4,2,3,5,6,7} v vun li mng
A={4,3,2,1,5,6,7}
i ch A[1] vi A[4]: A={1,3,2,4,5,6,7} v vun li mng
A={3,2,1,4,5,6,7}
i ch A[1] vi A[3]: A={2,1,3,4,5,6,7} v vun li mng
A={2,1,3,4,5,6,7}
i ch A[1] vi A[2]: A={1,2,3,4,5,6,7}
Mng cn li ch mt phn t qu trnh sp xp xong.

A[1..6] c mng
A[1..5] c mng
A[1..4] c mng
A[1..3] c mng
A[1..2] c mng

4. Gii thiu v ngn ng


Java
4.1. Java l g?
Java l ngn ng lp trnh hng i
tng( ta C++) do Sun Microsystem a ra
vo gia thp nin 90. Chng trnh vit bng
ngn ng java c th chy trn bt k h iu
hnh no c ci my o java( Java Vitual
Machine).

4.2. Lch s pht trin


Ngn ng lp trnh Java do James Gosling v
cc cng s ca Cng ty Sun Microsystem
pht trin.
Java c pht trin da trn C++ nhng
loi b mt s tnh nng nguy him ca C++
v c kh nng chy trn nhiu nn phn
cng khc nhau.
Java ra i v c gii thiu nm 1995.

4.3. Cu trc ca Java


Cng ngh Java pht trin mnh m nh vo "i gia

Sun Microsystem" cung cp nhiu cng c, th vin


lp trnh phong ph h tr cho vic pht trin nhiu
loi hnh ng dng khc nhau c th nh: J2SE (Java 2
Standard Edition) h tr pht trin nhng ng dng
n, ng dng client-server; J2EE (Java 2 Enterprise
Edition) h tr pht trin cc ng dng thng mi,
J2ME (Java 2 Micro Edition) h tr pht trin cc ng
dng trn cc thit b di ng, khng dy,

5. Demo

Code ca chng trnh.

Nhp d liu cho chng trnh.

Kt qu sau khi sp xp.

The end!
Thank for your
watching!

You might also like