You are on page 1of 54

Ging vin:

Vn Ch Nam Nguyn Th Hng Nhung ng Nguyn c Tin

Heap Sort

Quick
Sort

Radix Sort

Selection
Sort
Merge Sort

Cu trc d liu v gii thut HCMUS 2013

Bi ton sp xp
Cc thut ton sp xp

Cu trc d liu v gii thut HCMUS 2013

Bi ton sp xp: Sp xp l qu trnh x l mt


danh sch cc phn t t chng theo mt
th t tha yu cu cho trc
V d: danh sch trc khi sp xp:
{1, 25, 6, 5, 2, 37, 40}
Danh sch sau khi sp xp:
{1, 2, 5, 6, 25, 37, 40}
Thng thng, sp xp gip cho vic tm kim
c nhanh hn.
Cu trc d liu v gii thut HCMUS 2013

Cc phng php sp xp thng dng:


Bubble

Sort
Selection Sort
Insertion Sort
Quick Sort
Merge Sort
Heap Sort
Radix Sort
Cn tm hiu cc phng php sp xp v la chn
phng php ph hp khi s dng.
Cu trc d liu v gii thut HCMUS 2013

Selection Sort

Cu trc d liu v gii thut HCMUS 2013

M phng cch sp xp t nhin nht trong


thc t
Chn

phn t nh nht v a v v tr ng l u dy
hin hnh.
Sau xem dy hin hnh ch cn n-1 phn t.
Lp li cho n khi dy hin hnh ch cn 1 phn t.

Cu trc d liu v gii thut HCMUS 2013

Cc bc ca thut ton:
Bc 1. Khi gn i = 0.
Bc 2. Bc lp:
Tm a[min] nh nht trong dy t a[i] n a[n-1]
2.2. Hon v a[min] v a[i]
2.1.

Bc 3. So snh i v n:
Nu

i < n th tng i thm 1 v lp li bc 2.


Ngc li: Dng thut ton.
Cu trc d liu v gii thut HCMUS 2013

i=0

15

17

i=1

15

17

i=2

15

17

i=3

15

17

i=4

15

17

i=5

15

17

i=6

15

17

i=7

15

17

Cu trc d liu v gii thut HCMUS 2013

10

nh gi gii thut:
S

php so snh:

Ti

lt i bao gi cng cn (n-i-1) s ln so snh


Khng ph thuc vo tnh trng dy s ban u

S php so snh =

n(n 1)
(n i 1)

2
i 0
n 1

Cu trc d liu v gii thut HCMUS 2013

11

S php gn:
Tt

nht:

n 1

4 4n
i 0

Xu

nht:

n( n 7)
(4 n i 1)

2
i 0
n 1

Cu trc d liu v gii thut HCMUS 2013

12

Heap Sort

Cu trc d liu v gii thut HCMUS 2013

13

tng: khi tm phn t nh nht bc i,


phng php Selection sort khng tn dng
c cc thng tin c nh vo cc php so
snh bc i-1 cn khc phc nhc im
ny.
J. Williams xut phng php sp xp
Heapsort.

Cu trc d liu v gii thut HCMUS 2013

14

nh ngha Heap:
Gi

s xt trng hp sp xp tng dn, Heap c


nh ngha l mt dy cc phn t al, al+1, ar tha:
vi mi i thuc [l,r] (ch s bt u t 0)
ai a2i+1
ai a2i+2 {(ai,a2i+1), (ai,a2i+2) l cc cp phn t lin i}

Cu trc d liu v gii thut HCMUS 2013

15

Nu al, al+1, ar l mt heap th phn t al (u


heap) lun l phn t ln nht.
Mi dy ai, ai+1, ar vi 2i + 1 > r l heap.

Cu trc d liu v gii thut HCMUS 2013

16

Giai on 1: Hiu chnh dy ban u thnh heap


(bt u t phn t gia ca dy)
Giai on 2: sp xp da trn heap.
Bc

1: a phn t ln nht v v tr ng cui dy


Bc 2:
Loi

b phn t ln nht ra khi heap: r = r 1


Hiu chnh li phn cn li ca dy.
Bc

3: So snh r v l:

Nu

r > l th lp li bc 2.
Ngc li, dng thut ton.
Cu trc d liu v gii thut HCMUS 2013

17

M gi :

HeapSort(a: Array, n: int)


{
TaoHeap(a,n-1);
r = n-1;
while(r > 0)
{
HoanVi(a[0], a[r]);
r = r - 1;
HieuChinh(a,0,r);
}
}
Cu trc d liu v gii thut HCMUS 2013

18

M gi:

TaoHeap (a: Array, r: int)


{
int l = r/2;
while(l > 0)
{
HieuChinh(a,l,r);
l = l - 1;
}
}
Cu trc d liu v gii thut HCMUS 2013

19

M gi:

HieuChinh(a:
{
i = l; j =
while(j <=
{
if(c

Array, l: int, r: int)


2*i+1; x = a[i];
r)

2 phn t lin i)
//xc nh phn t lin i ln nht
if(a[j] < x) //tha quan h lin i
//dng
else
//hiu chnh
//xt kh nng hiu chnh lan truyn

}
}
Cu trc d liu v gii thut HCMUS 2013

20

15

2
7

17

8
4

2
6

17

15

15

17

15
9

17
6

1
4

2
7

9
4

7 2013 Lan truyn hiu chnh


Cu trc d liu v gii thut HCMUS

21

15

17
7

17

9
4

15
6

15
7
7

Hon v phn t u heap

2
6

15
9

1
4

2
2

17

7
7

172013
Cu trc d liu v gii thut HCMUS

9
4

Lan truyn hiu chnh

22

15
7
2

17

9
4

17

17

15

Hon v phn t u heap

7
6

2
17

15

6
8

1
4

Hon v phn t u heap

Cu trc d liu v gii thut HCMUS 2013

8
4

15

23

7
1

6
3

8
4

15

3
6
2
7

6
7

15

3
6

2
7

15

Hon v phn t u heap

1
4

17

17

17

17 2013
Cu trc d liu v gii thut HCMUS

7
4

15

24

7
3
2
17

6
4

17

15

6
4

15

Hon v phn t u heap

17

6
6

15

2
6

7
17

Cu trc d liu v gii thut HCMUS 2013

3
4

15

Hon v phn t u heap

25

2
3

17

6
4

3
6

15

17

Hon v phn t u heap

Mng sau khi sp xp:


2

15

Cu trc d liu v gii thut HCMUS 2013

17

6
4

15

26

nh gi gii thut:

phc tp ca gii thut trong trng hp xu nht


l O(nlog2n)

Cu trc d liu v gii thut HCMUS 2013

27

Quick Sort

Cu trc d liu v gii thut HCMUS 2013

28

Phn chia dy cn sp xp thnh 2 phn S1 v


S2 da vo phn t mc p:

Cu trc d liu v gii thut HCMUS 2013

29

QuickSort(array[], first, last)


Nu (first < last)
{
Chn phn t mc pivot.
Da vo gi tr pivot, phn hoch dy array thnh 2 dy
mi S1 (first pivotIndex-1) v S2 (pivotIndex+1last)
QuickSort (array, first, pivotIndex-1)
QuickSort (array, pivotIndex + 1, last)
}

Cu trc d liu v gii thut HCMUS 2013

30

S dng thm 2 ch s lastS1 v firstUnknown


phn hoch.
Tip tc phn hoch khi firstUnknown <= last.

Cu trc d liu v gii thut HCMUS 2013

31

Khi to
lastS1

= first
firstUnknown = first + 1

Cu trc d liu v gii thut HCMUS 2013

32

Trong khi cn phn hoch:


Nu

gi tr ti firstUnknown nh hn gi tr pivot

Chuyn

Ngc

li

Chuyn

sang nhm S1
sang nhm S2

Kt thc phn hoch:


a

pivot v ng v tr (i ch gi tr lastS1 v
first).
pivotIndex = lastS1
Cu trc d liu v gii thut HCMUS 2013

33

a v nhm S1

a v nhm S2

Cu trc d liu v gii thut HCMUS 2013

34

Phn hoch dy s: 27, 38, 12, 39, 27, 16

Pivot

Unknown

27

38

12

Pivot

S2

27

38

12

Pivot

S1

S2

27

12

38

39

27

16

Unknown
39

27

16

Unknown
39

27

16

Cu trc d liu v gii thut HCMUS 2013

35

Phn hoch dy s: 27, 38, 12, 39, 27, 16

Pivot

S1

S2

27

12

38

Pivot

S1

27

12

Pivot

39

12
S1

38

39

16

U.K
27

16

S2
16

39

Pivot
12

27

S2

S1

27

16

Unknown

27

27

38

S2
39

27

38

Cu trc d liu v gii thut HCMUS 2013

36

Chy tay thut ton Quick Sort sp xp


mng A trong 2 trng hp tng dn v gim
dn.
A = {2, 9, 5, 12, 20, 15, -8, 10}

Cu trc d liu v gii thut HCMUS 2013

37

nh gi gii thut:
Hiu

qu ph thuc vo vic chn gi tr mc

Tt

nht l phn t median.


Nu phn t mc l cc i hay cc tiu th vic phn
hoch khng ng u.
Bng

tng kt:
phc tp
Tt nht

O(nlog2n)

Trung bnh

O(nlog2n)

Xu nht

O(n2)

Cu trc d liu v gii thut HCMUS 2013

38

Merge Sort

Cu trc d liu v gii thut HCMUS 2013

39

Thc hin theo hng chia tr.

Do John von Neumann xut nm 1945.

Cu trc d liu v gii thut HCMUS 2013

40

Nu dy c chiu di l 0 hoc 1: c sp
xp.
Ngc li:
Chia

dy thnh 2 dy con (chiu di tng ng


nhau).
Sp xp trn tng dy con bng thut ton Merge Sort.
Trn 2 dy con ( c sp xp) thnh mt dy mi
c sp xp.

Cu trc d liu v gii thut HCMUS 2013

41

Input: Dy A v cc ch s left, right (sp xp dy A


gm cc phn t c ch s t left n right).
Output: Dy A c sp xp
MergeSort(A, left, right)
{
if (left < right) {
mid = (left + right)/2;
MergeSort(A, left, mid);
MergeSort(A, mid+1, right);
Merge(A, left, mid, right);
}

}
Cu trc d liu v gii thut HCMUS 2013

42

15
15
15
15

7
7

15

7
8

2
2

17
6

3
3

Cu trc d liu v gii thut HCMUS 2013

17

17
9

15

17
9

17

17

43

S ln chia cc dy con: log2n


Chi ph thc hin vic trn hai dy con sp
xp t l thun vi n.
Chi ph ca Merge Sort l O(nlog2n)
Thut ton khng s dng thng tin no v c
tnh ca dy cn sp xp => chi ph thut ton
l khng i trong mi trng hp

Cu trc d liu v gii thut HCMUS 2013

44

Cu trc d liu v gii thut HCMUS 2013

45

Radix Sort

Cu trc d liu v gii thut HCMUS 2013

46

Khng da vo vic so snh cc phn t


S dng cc thng nhm cc gi tr theo c
s ca v tr ang xem xt.
Ni kt cc gi tr trong thng to thnh dy
sp xp.

Cu trc d liu v gii thut HCMUS 2013

48

Cho dy s sau: 27, 78, 52, 39, 17, 46


C s: 10, S lng k s: 2
Xt k s th nht
0

17
52

46

27

Kt hp li: 52, 46, 27, 17, 78, 39


Cu trc d liu v gii thut HCMUS 2013

78

39

49

Xt k s th 2 ca: 52, 46, 27, 17, 78, 39


0

17

27

39

46

52

78

Kt hp dy c th t: 17, 27, 39, 46, 52, 78

Cu trc d liu v gii thut HCMUS 2013

50

phc tp ca thut ton: O(n)


(Chi tit hn: O(k*n) vi k l s lng k s)

Cu trc d liu v gii thut HCMUS 2013

51

Cu trc d liu v gii thut HCMUS 2013

52

Cc thut ton Bubble sort, Selection sort,


Insertion sort
Ci

t thut ton n gin.


Chi ph ca thut ton cao: O(n2).

Heap sort c ci tin t Selection sort nhng


chi ph thut ton thp hn hn (O(nlog2n))

Cu trc d liu v gii thut HCMUS 2013

53

Cc thut ton Quick sort, Merge sort l nhng


thut ton theo chin lc chia tr.
Ci

t thut ton phc tp


Chi ph thut ton thp: O(nlog2n)
Rt hiu qu khi dng danh sch lin kt.
Trong thc t, Quick sort chy nhanh hn hn Merge
sort v Heap sort.

Cu trc d liu v gii thut HCMUS 2013

54

Ngi ta chng minh O(nlog2n) l ngng chn


di ca cc thut ton sp xp da trn vic
so snh gi tr ca cc phn t.

Cu trc d liu v gii thut HCMUS 2013

55

Cu trc d liu v gii thut HCMUS 2013

You might also like