[slide] chuong 1 - cac thuat toan sap xep.pdf
TRANSCRIPT
-
Cc thut ton sp xp(Sorting algorithms)
Nguyn Tri TunKhoa CNTT H.KHTN.Tp.HCMEmail: [email protected]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 2
Sp xp 1 mng cc s nguynSp xp 1 mng cc s nguyn
Gi s c 1 mng gm 6 s nguyn. Ta cn sp xp cc phn t ca mng theo th t tng dn
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 3
Thut ton Chn trc tip (Selection sort Algorithm)Thut ton Chn trc tip (Selection sort Algorithm) Bt u bng
cch tm phn t nh nht
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 4
Selection sort AlgorithmSelection sort Algorithm
Hon v phn t nh nht tm c vi phn t u tin ca mng
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 5
Selection sort AlgorithmSelection sort Algorithm
1 phn ca mng c sp xp
Phn sp Phn cha sp
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 6
Selection sort AlgorithmSelection sort Algorithm
Tm phn t nh nhttrong phn cha c sp
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 7
Selection sort AlgorithmSelection sort Algorithm
Hon v phn t nh nht trong phn cha c sp vi phn t u tin trong phn ny [0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 8
Selection sort AlgorithmSelection sort Algorithm
Phn c sp xp ca mng c tng thm 1 phn t
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 9
Selection sort AlgorithmSelection sort Algorithm
Tip tc tng t ... Phn t
nh nht
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 10
Selection sort AlgorithmSelection sort Algorithm
Tip tc tng t ...
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 11
Selection sort AlgorithmSelection sort Algorithm
Tip tc tng t ...
Phn sp tng thm
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 12
Selection sort AlgorithmSelection sort Algorithm
Qu trnh ln lt thm tng phn t vo phn sp
Phn sp cha cc phn t nh nht, sp tng dn
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 13
Selection sort AlgorithmSelection sort Algorithm
Thut ton dng khi ch cn 1 phn t( l phn t ln nht).
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 14
Selection sort AlgorithmSelection sort Algorithm
Ton b mng c sp th t.
Tng qut: chnphn t nh nht v a n v v tr u ca phn cha c sp trong mng.
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 15
Selection sort Algorithm(Minh ha chng trnh)Selection sort Algorithm(Minh ha chng trnh)
void SelectionSort (int a[ ], int n ) {
int min; // v tr ca phn t nh nht (trong phn cha sp)int tmp; // bin tm dng khi hon vfor (int i = 0; i < n; i++ ) {
// tm phn t nh nht trong phn cha spmin = i;for (int j = i + 1; j < n; j++)
if (a[j] < a[min] ) min = j;// hon v phn t nh nht c tm thy vi phn t uif (a[min] < a[i]) { tmp = a[i]; a[i] = a[min]; a[min] = tmp; }
} // end of for i}
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 16
nh gi thut ton(Selection sort Algorithm)nh gi thut ton(Selection sort Algorithm)Trong mi trng hp, s php so snh l:
(n-1) + (n-2) + + 1 = n(n-1)/2 = O(n2)
S php hon v: Trng hp xu nht: O(n)Trng hp tt nht (mng sp t t tng
dn): 0
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 17
Thut ton Chn trc tip (Insertion sort Algorithm)Thut ton Chn trc tip (Insertion sort Algorithm) Thut ton
Chn trc tip cng chia mng thnh 2 phn: phn c spv phn cha c sp [0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 18
Insertion sort AlgorithmInsertion sort Algorithm
Phn sp lc u ch c 1 phn t u tinca mng (khng cn thit l phn t nh nht)
Phn sp Phn cha sp
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 19
Insertion sort AlgorithmInsertion sort Algorithm
M rng phn sp bng cch thm vo phn t u tin trong phn cha c sp
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 20
Insertion sort AlgorithmInsertion sort Algorithm
...v t n vo v tr thch hp, sao cho phn sp vn gi nguyn tnh th t (tng dn).
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 21
Insertion sort AlgorithmInsertion sort Algorithm
Trong v d ny, phn t mi c t vo v tr u ca phn sp.
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 22
Insertion sort AlgorithmInsertion sort Algorithm
i khi chng ta gp may, phn t mi khng cn phi di chuyn.
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 23
Insertion sort AlgorithmInsertion sort Algorithm
v li gp may thm 1 ln na..
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 24
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
Copy phn t mi vo 1 bin trung gian
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha sp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 25
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
Dch chuyn cc phn t trong phn sp sang phi
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 26
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
to 1 ch trng cho phn t mi
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 27
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
tip tc dch chuyn cc phn t...
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 28
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
tip tc dch chuyn cc phn t...
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 29
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
...cho n khi tm thy v tr thch hp cho phn t mi...
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 30
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
Copy phn t mi vo li mng, ti v tr ny.
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 31
Insertion sort AlgorithmLm sao chn 1 phn t ?Insertion sort AlgorithmLm sao chn 1 phn t ?
Phn t cui cng cng phi chn. Copy n vo 1 bin trung gian...
[0] [1] [2] [3] [4] [5]
Phn sp Phn cha
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 32
Insertion sort AlgorithmCu hi ?Insertion sort AlgorithmCu hi ?
C bao nhiu php dch chuyn xy ra ?
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 33
Insertion sort AlgorithmCu hi ?Insertion sort AlgorithmCu hi ?
C 4 php dch chuyn
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 34
Insertion sort AlgorithmInsertion sort Algorithm
Copy phn t tr li mng.
[0] [1] [2] [3] [4] [5]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 35
Insertion sort Algorithm(Minh ha chng trnh)Insertion sort Algorithm(Minh ha chng trnh)
void InsertionSort (int a[ ], int n) {
int saved; // bin trung gian lu li gi tr phn t cn chnfor (int i = 1; i < n; i++ ) {
saved = a[i]; // lu li gi tr phn t cn chn// dch chuyn cc phn t trong phn sp sang phifor (int j = i; j > 0 && saved < a[j-1]; j--)
a[j] = a[j-1];a[j] = saved; // chn phn t vo ng v tr
} // end of for i}
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 36
nh gi thut ton(Insertion sort Algorithm)nh gi thut ton(Insertion sort Algorithm)Trng hp xu nht c:
1 + 2 + 3 + + (n-1) = n(n-1)/2 = O(n2)php so snh v dch chuyn
Trng hp tt nht (mng c th t tng dn): O(n) php so snh v 0 php dch chuyn
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 37
Chn trc tip v Chn trc tip u c chi ph cho trng hp xu nht l O(n2)
Do , khng thch hp cho vic sp xp cc mng ln
D ci t, d kim li Chn trc tip tt hn Chn trc tip,
nht l khi mng c th t sn Cn c nhng thut ton hiu qu hn cho
vic sp xp cc mng ln
Nhn xt chung(Selection & Insertion sort)Nhn xt chung(Selection & Insertion sort)
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 38
Thut ton Shell sort(Shell sort Algorithm)Thut ton Shell sort(Shell sort Algorithm)c xut vo nm 1959 bi Donald L.
Shell trn tp ch Communication of the ACM
Thut ton ny ci tin hiu qu ca thutton Chn trc tip
Ph v ro cn chi ph O(n2) ca nhngthut ton sp xp trc
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 39
Shell sort AlgorithmShell sort Algorithm
tng:Chia dy ban u thnh h dy con
a0, a0+h, a0+2h,
a1, a1+h, a1+2h,
a2, a2+h, a2+2h,
Sp xp tng dy con bng cch s dng phng php Chn trc tip
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 40
Shell sort AlgorithmShell sort Algorithm
Index 0 1 2 3 4 5 6 7 8 9 10 11 12Ban u 81 94 11 96 12 35 17 95 28 58 41 75 15
Chia dy thnh h=5 dy con
Index 0 1 2 3 4 5 6 7 8 9 10 11 12h=5 81 94 11 96 12 35 17 95 28 58 41 75 15
Sp xp 5 dy con bng phng php Chn trc tip
Index 0 1 2 3 4 5 6 7 8 9 10 11 12h=5 35 17 11 28 12 41 75 15 96 58 81 94 95
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 41
Shell sort AlgorithmShell sort Algorithm
Chia dy thnh h=3 dy con
Sp xp 3 dy con bng phng php Chn trc tip
Index 0 1 2 3 4 5 6 7 8 9 10 11 12h=3 28 12 11 35 15 41 58 17 94 75 81 96 95
Index 0 1 2 3 4 5 6 7 8 9 10 11 12h=3 35 17 11 28 12 41 75 15 96 58 81 94 95
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 42
Shell sort AlgorithmShell sort Algorithm
Sp xp 1 dy con bng phng php Chn trc tip
Index 0 1 2 3 4 5 6 7 8 9 10 11 12h=1 28 12 11 35 15 41 58 17 94 75 81 96 95
Chia dy thnh h=1 dy con
Index 0 1 2 3 4 5 6 7 8 9 10 11 12h=1 11 12 15 17 28 35 41 58 75 81 94 95 96
Kt thc !
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 43
Shell sort AlgorithmShell sort Algorithm
Thut ton s dng 1 dy hk:h1, h2, h3, , ht
(*) Tnh cht dy hk: hi > hi+1 (dy gim dn) ht = 1
Dy hk gi l dy gia s (Increment sequence), dng to lp cc dy con trong mng ban u
Trong v d: h1 = 5, h2 = 3, h3 = 1
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 44
Shell sort AlgorithmShell sort Algorithm
Vn : La chn dy gia s hk nh th no ?Mi dy hk tho mn tnh cht (*) u chp nhn c;
Tuy nhin, cho n nay, ngi ta ch c th ch ra rng dy hk ny tt hn dy hk kia, ch khng th xc nh c dy no l tt nht
Chi ph ca thut ton Shell sort ph thc vo 2 vn chnh l:Cch thc xy dng dy hkD liu nhp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 45
Shell sort AlgorithmShell sort Algorithm
Cc chin lc xy dng dy hk c kho st: D.Shell (1959):
h1 = [n/2], hi+1 = [hi/2], ht = 1 T.H.Hibbard (1963):
1, 3, 7, 15, . , 2k-1 (k *)N* = N \ {0} = { 1, 2, 3, 4, .}
Knuth:h1 = 1, hi = hi-1* 3 +1, v dng tai i = log2n- 11, 4, 13, 40, 121, ....
Pratt (1979):1, 2, 3, 4, 6, 8, 9, 12, 16, ..., 2p3q, (vi p, q N)
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 46
Shell sort Algorithm(Minh ha chng trnh)Shell sort Algorithm(Minh ha chng trnh)void ShellSort(int h[], int a[], int t, int n) {
for (int k=0; k
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 47
nh gi thut ton(Shell sort Algorithm)nh gi thut ton(Shell sort Algorithm) Vic phn tch gii thut ny t ra nhng vn
ton hc ht sc phc tp m trong c 1 s vn n nay vn cha c gii quyt
Ngi ta vn cha bit chn dy hk nh th no l ph hp cho ra kt qu tt nht
Mt s kt qu chng minh: Shell sort vi dy hk ca Donald Shell c s php gn
trong trng hp xu nht l O(n2) S dng dy hk ca Hibbard cn dng O(n3/2) php gn Chi ph khi dng dy hk ca Pratt l O(n(log2n)2)
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 48
Thut ton Sp xp cy(Heap sort Algorithm)Thut ton Sp xp cy(Heap sort Algorithm) c xut vo nm 1964 bi J.W.J. Williams
trn tp ch Communication of the ACM y l thut ton sp xp chm nht trong s cc
thut ton c phc tp O(n*log2n) Nhng n li t c u im v tnh n gin
ca ci t khng i hi vng qui phc tp nh ca Quicksort v khng s dng mng ph nh Mergesort
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 49
Heap sort AlgorithmNi dungHeap sort AlgorithmNi dung
nh ngha HeapBiu din Heap bng mng (array)Thao tc c bn trn HeapThut ton Heap sortnh gi thut ton
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 50
Heap sort Algorithmnh ngha HeapHeap sort Algorithmnh ngha Heap
Heap l mt cy nh phn y
Mi nt trong Heapcha mt gi tr
c th so snh vigi tr ca nt khc
19
4222127
23
45
35
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 51
Heap sort Algorithmnh ngha HeapHeap sort Algorithmnh ngha Heap
c im ca Heapl gi tr ca
mi nt >= gi tr cacc nt con ca n
19
4222127
23
45
35Heap l mt
cy nh phn y
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 52
Heap sort Algorithmnh ngha HeapHeap sort Algorithmnh ngha Heap
Heap l mt cy nh phn tha cc tnh cht sau sau:
L mt cy y ;Gi tr ca mi nt khng bao gi b hn gi tr
ca cc nt conH qu:Nt ln nht l ?
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 53
Heap sort AlgorithmBiu din Heap bng mngHeap sort AlgorithmBiu din Heap bng mng
Ta s lu gi tr ca cc nt trong mt array
2127
23
42
35
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 54
Heap sort AlgorithmBiu din Heap bng mngHeap sort AlgorithmBiu din Heap bng mng
Gi tr ca nt gc s v tr u tin ca array
2127
23
42
35
42
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 55
Heap sort AlgorithmBiu din Heap bng mngHeap sort AlgorithmBiu din Heap bng mng
Gi tr ca hai nt con ca gc c in vo hai v tr tip theo
2127
23
42
35
42 35 23
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 56
Heap sort AlgorithmBiu din Heap bng mngHeap sort AlgorithmBiu din Heap bng mng
Gi tr ca hai nt hng k tip s tun t c lu li ti hai v tr tip sau
Th t lu tr trn mng c thc hin t tri sang phi
2127
23
42
35
42 35 23 27 21
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 57
Heap sort AlgorithmBiu din Heap bng mngHeap sort AlgorithmBiu din Heap bng mng
Lin kt gia cc nt c hiu ngm, khng trc tip dng con tr.
Array c xem l cy ch do cch ta x l d liu trn 2127
23
42
35
42 35 23 27 21
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 58
Heap sort AlgorithmBiu din Heap bng mngHeap sort AlgorithmBiu din Heap bng mng
Nu ta bit c ch s ca 1 phn t trn mng, ta s d dng xc nh c ch s ca nt cha v (cc) nt con ca n.
[0] [1] [2] [3] [4]
2127
23
42
35
42 35 23 27 21
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 59
Heap sort AlgorithmBiu din Heap bng mngHeap sort AlgorithmBiu din Heap bng mng
Nt gc ch s [0]Nt cha ca nt [i] c ch s l [(i-1)/2]Cc nt con ca nt [i] (nu c) c ch s
[2i+1] v [2i+2]V d:Nt con ca nt [0] l nt [1] v nt [2]Nt cha ca nt [7] l nt [3]Nt cha ca nt [8] l nt [3]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 60
Heap sort AlgorithmThao tc c bn trn HeapHeap sort AlgorithmThao tc c bn trn HeapHeapify - iu chnh 1 phn tNt ang xt c gi tr l
27, b hn gi tr ca nt con ca n
Tin hnh i ch vi nt con c gi tr ln nht
34
4222135
23
42
27
28
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 61
Heap sort AlgorithmThao tc c bn trn HeapHeap sort AlgorithmThao tc c bn trn Heap
Nt ang xt c gi tr l 27, b hn gi tr ca nt con ca n
Tin hnh i ch vi nt con c gi tr ln nht
34
4222127
23
42
35
28
Heapify - iu chnh 1 phn t
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 62
Heap sort AlgorithmThao tc c bn trn HeapHeap sort AlgorithmThao tc c bn trn Heap
4222134
23
42
35
2827
Heapify - iu chnh 1 phn tHon tt !
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 63
Heap sort AlgorithmThao tc c bn trn HeapHeap sort AlgorithmThao tc c bn trn Heapvoid Heapify(int a[], int n, int i) // iu chnh phn t a[i]{
int saved = a[i]; // lu li gi tr ca nt iwhile (i < n/2) { // a[i] khng phi l nt l
int child = 2*i + 1; // nt con bn tri ca a[i]if (child < n-1)
if (a[child] < a[child+1]) child ++;if (saved >= a[child]) break;a[i] = a[child];i = child;
}a[i] = saved; // Gn gi tr ca nt i vo v tr mi
}
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 64
Heap sort AlgorithmThut ton Heap sortHeap sort AlgorithmThut ton Heap sortXy dng Heap: S dng thao tc Heapify chuyn i mt mng bnh thng thnh Heap
Sp xp:Hon v phn t cui cng ca Heap vi phn
t u tin ca Heap (c gi tr ln nht)Loi b phn t cui cngThc hin thao tc Heapify iu chnh phn
t u tin
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 65
Heap sort AlgorithmThut ton Heap sort - Xy dng HeapHeap sort AlgorithmThut ton Heap sort - Xy dng Heap
Tt c cc phn t trn mng c ch s [n/2] n [n-1] u l nt l
Mi nt l c xem l Heap c mt phn tThc hin thao tc Heapify trn cc phn t
c ch s t [n/2]-1 n [0]
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 66
Heap sort AlgorithmThut ton Heap sort - Xy dng HeapHeap sort AlgorithmThut ton Heap sort - Xy dng Heap
Thc hin Heapify vi tt c cc nt khng phi l l
Theo th t t tri sang phi
1714
23
20
12
20 12 23 14 17
Cc nt l
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 67
Heap sort AlgorithmThut ton Heap sort - Xy dng HeapHeap sort AlgorithmThut ton Heap sort - Xy dng Heap
// Xy dng mng bnh thng a tr thnh// mt Heapvoid BuildHeap(int a[], int n){
for (int i = n/2 - 1; i >= 0; i--)Heapify(a, n, i);
}
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 68
Heap sort AlgorithmThut ton Heap sort - Sp xpHeap sort AlgorithmThut ton Heap sort - Sp xp
void HeapSort(int a[], int n){
BuildHeap(a, n);for (int i=n-1; i>=0; i--) {
Hon v a[0] vi a[i]Heapify(a, i, 0);
}}
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 69
nh gi thut ton(Heap sort Algorithm)nh gi thut ton(Heap sort Algorithm)Heap sort lun c phc tp l O(n*
log2n)Quick sort thng c phc tp l O(n*
log2n) nhng trng hp xu nht li c phc tp O(n2)
Nhn chung Quick sort nhanh hn Heap sort 2 ln nhng Heap sort li c n nh cao trong mi trng hp
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 70
Thut ton Sp xp trn(Merge sort Algorithm)Thut ton Sp xp trn(Merge sort Algorithm)L mt phhg php sp xp dng Chia tr (Divide and Conquer)
Nguyn tc Chia tr:Nu vn nh th x l ngayNu vn ln: chia thnh 2 vn nh, mi
phn bng Gii quyt tng vn nhKt hp kt qu ca nhng vn nh li vi
nhau
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 71
Merge sort AlgorithmMerge sort Algorithm
tng:Chia dy cn sp thnh 2 phn, v tr giaNu s phn t ca mi phn > 1 th
Sp sp mi phn bng Merge sortTrn 2 phn c sp li vi nhau
Thut ton Merge sort c th ci t bng qui
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 72
Merge sort AlgorithmMerge sort Algorithm
V d:
2 3 6 7 10 12 16 18
16 12 7 6 3 2 18 10
?
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 73
Merge sort AlgorithmMerge sort Algorithm
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
V d:
Chia
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 74
Merge sort AlgorithmMerge sort Algorithm
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
Chia
Chia
V d:
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 75
Merge sort AlgorithmMerge sort Algorithm
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
Chia
Chia
Chia
V d:
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 76
Merge sort AlgorithmMerge sort Algorithm
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
12 16 6 7 2 3 10 18
Chia
Chia
Chia
Trn
V d:
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 77
Merge sort AlgorithmMerge sort Algorithm
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
12 16 6 7 2 3 10 18
6 7 12 16 2 3 10 18
Chia
Chia
Chia
Trn
Trn
V d:
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 78
Merge sort AlgorithmMerge sort Algorithm
16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
Chia 16 12 7 6 3 2 18 10
16 12 7 6 3 2 18 10
Trn 12 16 6 7 2 3 10 18
6 7 12 16 2 3 10 18
2 3 6 7 10 12 16 18
Chia
Chia
Trn
Trn
V d:
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 79
Merge sort Algorithm(Minh ha chng trnh)Merge sort Algorithm(Minh ha chng trnh)
void MergeSort(int a[], int Left, int Right){
int Mid; // V tr ca phn t giaif (Left < Right) { // Dy c > 1 phn t
Mid = (Left + Right)/2; // Chia thnh 2 dy MergeSort(a, Left, Mid); // Sort dy bn triMergeSort(a, Mid+1, Right); // Sort dy bn phi// Trn 2 dy li vi nhauMerge(a, Left, Mid, Right);
}} // end of MergeSort
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 80
Merge sort AlgorithmThao tc trnMerge sort AlgorithmThao tc trn
6 7 12 16 2 3 10 18
? ? ? ? ? ? ? ?
Hai dy con sp
Bng tm
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7]
c1 c2
d
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 81
Merge sort AlgorithmThao tc trnMerge sort AlgorithmThao tc trn
6 7 12 16 2 3 10 18
2 ? ? ? ? ? ? ?
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7]
c1 c2
d
Hai dy con sp
Bng tm
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 82
Merge sort AlgorithmThao tc trnMerge sort AlgorithmThao tc trn
6 7 12 16 2 3 10 18
2 3 ? ? ? ? ? ?
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7]
c1 c2
d
Hai dy con sp
Bng tm
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 83
Merge sort AlgorithmThao tc trnMerge sort AlgorithmThao tc trn
6 7 12 16 2 3 10 18
2 3 6 ? ? ? ? ?
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7]
c1 c2
d
Hai dy con sp
Bng tm
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 84
Merge sort AlgorithmThao tc trnMerge sort AlgorithmThao tc trn
6 7 12 16 2 3 10 18
2 3 6 7 ? ? ? ?
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7]
c1 c2
d
Hai dy con sp
Bng tm
tip tc
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 85
Merge sort AlgorithmThao tc trnMerge sort AlgorithmThao tc trn
6 7 12 16 2 3 10 18
2 3 6 7 10 12 16 18
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7]
c1 c2
d
Hai dy con sp
Bng tm
Hon tt !
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 86
Merge sort AlgorithmThao tc trnMerge sort AlgorithmThao tc trn
2 3 6 7 10 12 16 18
[0] [1] [2] [3] [4] [5] [6] [7]
[0] [1] [2] [3] [4] [5] [6] [7]
2 3 6 7 10 12 16 18Hai dy con sp
Bng tm
Copy tr li vo mng
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 87
Merge sort AlgorithmThao tc trn Minh ha chng trnhMerge sort AlgorithmThao tc trn Minh ha chng trnh
void Merge(int a[], int Left, int Mid, int Right){
// c1, c2: v tr hin ti trn dy con tri, dy con phi// d: v tr hin ti trn dy tmfor(int d=Left, int c1=Left, c2=Mid+1; (c1
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 88
Merge sort AlgorithmThao tc trn Minh ha chng trnhMerge sort AlgorithmThao tc trn Minh ha chng trnh
// Khi 1 trong 2 dy ht phn t// nu dy bn tri cn d chp vo mng tmfor( ; c1
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 89
nh gi thut ton(Merge sort Algorithm)nh gi thut ton(Merge sort Algorithm)
Trn 2 dy c kch thc n/2:O(n)
O(n).
.
.
O(n)
O(log2n)ln
Trn 4 dy c kch thc n/4:
Trn n dy c kch thc 1:
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 90
nh gi thut ton(Merge sort Algorithm)nh gi thut ton(Merge sort Algorithm)Chi ph O(n*log2n) sp xp bt k 1 dy
no S dng 1 vng nh trung gian O(n) phn tC n nh cao (khng b nh hng bi
th t ban u ca d liu)
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 91
Thut ton Sp xp nhanh(Quick sort Algorithm)Thut ton Sp xp nhanh(Quick sort Algorithm)Quick sort cng l mt thut ton chia
tr tng:Chia dy cn sp thnh 2 phnCch chia ca Quick sort khc vi cch chia
ca Merge sort: dy bn tri cha cc gi tr nh hn dy bn phi.
Thc hin vic sp xp trn tng dy con ( qui)
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 92
Quick sort AlgorithmMinh ha chng trnhQuick sort AlgorithmMinh ha chng trnh
void QuickSort(int a[], int Left, int Right){
// Ch x l khi dy c > 1 phn tif (Left < Right) {
int m1, m2;// chia dy (Left, Right) thnh 2 dy conPartition(a, Left, Right, m1, m2);QuickSort(a, Left, m1); // dy con bn triQuickSort(a, m2, Right); // dy con bn phi
}}
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 93
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
8 32 11 754 10124 5
5
Phn t chun
Chn 1 phn t lm chun, thng ta chn phn t gia ca dy
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 94
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
low high
8 32 11 754 10124 5
5
Phn t chun
Bt u so snh cc phn t t 2 u ca dy vi phn t chun
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 95
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
low high
8 2 11 754 10124 5
tm ra c 1 phn t sai v tr pha bn phi
5
Phn t chun
33
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 96
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
low high
8 32 11 7512 10124 5
5
Phn t chun
tm ra c thm 1 phn t sai v tr pha bn tri
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 97
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
low high
8 2 11 75104 5
hon v 2 phn t cho nhau, v li tip tc
5
Phn t chun
123 312
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 98
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
low high
8 1211 75434 5
tm thy 2 phn t sai v tr mi
5
Phn t chun
1010 22
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 99
210
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
low high
8 1210 11 754 234 5
hon v cho nhau, v tip tc
5
Phn t chun
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 100
Quick sort AlgorithmCch chia thnh 2 dy con (Partition)Quick sort AlgorithmCch chia thnh 2 dy con (Partition)
low(m2)
high(m1)
1210 11 74 234
low > high kt thc qu trnh phn chia
dy bn tri dy bn phi
8 585
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 101
Quick sort AlgorithmPartition Minh ha chng trnhQuick sort AlgorithmPartition Minh ha chng trnh
void Partition(int a[], int Left, int Right, int &m1, int &m2){
int Pivot = a[(Left+Right)/2]; // phn t chunint low = Left, high = Right;while (low < high) {
while (a[low] < Pivot) low++;while (a[high] > Pivot) high--;if (low
-
Quick sort AlgorithmCch chn phn t Pivot Quick sort AlgorithmCch chn phn t Pivot
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 102
-
Spring 2009 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT H KHTN Tp.HCM 103
nh gi thut ton(Quick sort Algorithm)nh gi thut ton(Quick sort Algorithm)Chi ph trung bnh O(n*log2n)Chi ph cho trng hp xu nht O(n2)Chi ph ty thuc vo cch chn phn t
chun:Nu chn c phn t c gi tr trung bnh, ta
s chia thnh 2 dy bng nhau; nu chn nhm phn t nh nht (hay ln nht) O(n2)