Bai 5-Search Sort
description
Transcript of Bai 5-Search Sort
-
1TM KIM & SP XPBi ging Cu trc d liu v Gii thut
-
Tm kimTun t
Ni dung
Tun t Nh phn
Sp xp Bubble sort Selection sort Insert sort Quick sort
-
Tm kim3
Tm kim: duyt mt danh sch v ly ra phn t tho tiu chun cho trc.
L thao tc ph bin trn my tnh: L thao tc ph bin trn my tnh: Tm mu tin trong c s d liu Tm kim thng tin trn Internet
Kho st vic tm kim trn mng/danh sch.
-
Tm kimGii thut
4
Input: Mng A gm n phn t Gi tr x cn tm
Tr v: V tr phn t x trong A hoc 1 nu x khng xut hin
Thao tc c bn: So snh
-
Tm kim tun tGii thut
5
Gii thut: Ln lt so snh x vi cc phn t ca mng A cho n khi
gp c phn t cn tm, hoc ht mng. V d: A = {1, 25, 6, 5, 2, 37, 40}, x = 6
1 25 6 5 2 37 40
x = 6
x = 6
Dng
1 25 6 5 2 37 40
1 25 6 5 2 37 40
x = 6
-
Tm kim tun tnh gi
6
nh gi (thao tc so snh): Tt nht: O(1) Xu nht: O(n) Trung bnh:
Him khi xy ra. Ti sao?
Trung bnh: Gi s d liu phn b u, xc sut bt gp x ti mi v tr u nh nhau.
Mi vng lp thc hin 2 thao tc so snh. Ti sao? S thao tc = 2*(1 + 2 + + n) = n + 1 phc tp: O(n)
-
Tm kim tun tPhn t lnh canh
7
Mi vng lp cn 2 thao tc so snh: Kim tra ht mng Kim tra phn t hin ti c bng x
Phn t lnh canh: t gi tr x vo cui mng Phn t lnh canh: t gi tr x vo cui mng khng cn kim tra iu kin ht mng.
V d: A = {1, 25, 5, 2, 37}, x = 6
Tr v: n nu khng tm thy
1 25 5 2 37 6
-
Tm kim nh phn8
Khi mng gm cc phn t c sp, tn dng iu kin ny gim s thao tc.
tng: tng: Xt phn t gia A[m] Nu A[m] = x, tr v m Nu A[m] > x, tm trong cc phn t bn tri ca m Nu A[m] < x, tm trong cc phn t bn tri ca m
-
Tm kim nh phnV d minh ho
9
A = {2, 3, 6, 7, 10, 16, 18}, x = 16
2 3 6 7 10 16 18
[0] [1] [2] [3] [4] [5] [6][0] [1] [2] [3] [4] [5] [6][4] [5] [6]
2 3 6 7 10 16 18
-
10
Tm kim nh phnChng trnhint BinarySearch(int a[], int n, int x){int l = 0, r = n-1;while (l
-
Tm kim nh phnBi tp
11
Thc hin vic tm kim i vi cc bi tp sau: A = {1, 2, 6, 26, 28, 37, 40}, x = 40
A = {1, 2, 6, 26, 28, 37, 40}, x = -7
-
Tm kim nh phnnh gi
12
Mi ln lp, chiu di mng con phi xt c gim so vi mng trc .
Mng ban u c chia ti a k ln vi k =log2n.log2n.
Ti a k vng lp c thc hin trong mi vng lp thc hin 1-2 php so snh.
phc tp: O(log2n)
Mng cn c sp xp trc!!!
-
Sp xp13
Sp xp: t chc cc phn t trong mt danh sch theo th t.
L bi ton ph bin trn my tnh. L bi ton ph bin trn my tnh. Nhiu gii thut sp xp ra i.
Kho st v nh gi hiu qu mt s gii thut sp xp thng dng da trn mng.
-
Sp xpGii thut
14
Input: Mng A gm n phn t.
Output: Mt hon v ca A sao cho: A0 A1 An-1 (sp Mt hon v ca A sao cho: A0 A1 An-1 (sp
xp tng dn). Thao tc c bn:
So snh Hon v (i v tr hai phn t)
-
Sp xpCc gii thut
15
Cc phng php sp xp thng dng: Bubble Sort Selection Sort Insertion Sort Insertion Sort Quick Sort Merge Sort Shell Sort Heap Sort Radix Sort
-
Bubble sort16
Gii thut: Xut pht t cui (u) dy, i ch cc cp phn t k
cn a phn t nh hn v v tr ng u dyhin hnh.
Sau khng xt n n bc k tip. Ln x l th i s c v tr u dy l i. Lp li cho n khi khng cn cp phn t no xt.
V d: sp xp dy A: 15 2 8 7 3 6 9 17
-
Bubble sortV d
17
15 2 8 7 3 6 9 17
15 2 8 3 7 6 9 17
15 2 3 8 7 6 9 17
i = 0
i = 0
i = 0
j = 4
j = 3
j = 1
2 15 3 8 7 6 9 17
2 15 3 8 6 7 9 17
2 15 3 6 8 7 9 17
2 3 15 6 8 7 9 17
2 3 15 6 7 8 9 17
i = 1
i = 1
i = 1
i = 2
i = 2
j = 5
j = 4
j = 2
j = 5
j = 3
-
Bubble sortV d (tt)
18
2 3 6 15 7 8 9 17
2 3 6 7 15 8 9 17
2 3 6 7 8 15 9 17
j = 4
j = 5
j = 6
i = 3
i = 4
i = 5 2 3 6 7 8 15 9 17
2 3 6 7 8 9 15 17
2 3 6 7 8 9 15 17
j = 7i = 6
-
Bubble sortChng trnh
19
void BubbleSort(int a[], int n){for(int i=0; ii; j--){if(a[j]
-
Bubble sortBi tp
20
M t tnh trng dy A sau mi bc chy vi thut ton Bubble sort.A = {2, 9, 5, 12, 20, 15, -8, 10}
-
Bubble sortnh gi
21
Cc gii thut sp xp thng c phc tp tng t nhau.
Cn mt nh gi chi tit: Cc trng hp: xu nht, tt nht, trung bnh Cc trng hp: xu nht, tt nht, trung bnh Cc thao tc:
So snh Gn (quan trng hn v tn nhiu chi ph hn). Lu : mi
thao tc gn v tn 3 php gn
-
Bubble sortChng trnh
22
void BubbleSort(int a[], int n){for(int i=0; ii; j--){if(a[j]
-
Bubble sortnh gi
23
S php so snh: khng ph thuc vo tnh trng dy s ban u.
2
0
( 1)( 1)2
n
i
n nn i
=
=
S lng php gn: ty vo kt qu so snh Tt nht: 0 Xu nht:
2
0
3 ( 1)3( 1)2
n
i
n nn i
=
=
-
Shaker sort Ci tin Bubble sort
24
Nhn xt: Bubble sort c cc khuyt im: Khng nhn din c tnh trng dy c th t hay
khng c th t tng phn. Trong khi phn t nh c a v v tr ng rt
nhanh, th cc phn t ln li c a v v tr ng rt chm.Gii thut Shaker sort ci tin cc khuyt im ny.
-
Shaker sort Ci tin Bubble sort
25
Ci tin: Duyt mng theo 2 lt t 2 pha khc nhau:
Lt i: y phn t nh v u mng Lt v: y phn t ln v cui mng.
Ghi nhn li nhng on sp.
-
Shaker sortV d minh ho
26
15 2 8 7 3 6 9 17
15 2 8 3 7 6 9 17
15 2 3 8 7 6 9 17
r =7l = 0
2 15 3 8 7 6 9 17
2 3 15 8 7 6 9 17
2 3 8 15 7 6 9 17
2 3 8 7 15 6 9 17
k=1r =7l = 1
-
Shaker sortV d minh ho
27
2 3 8 7 6 15 9 17
2 3 8 7 6 9 15 17 k=5
2 3 8 7 6 9 15 17
r =5l = 1
2 3 8 6 7 9 15 17
2 3 6 8 7 9 15 17 k=3
2 3 6 7 8 9 15 17
r =5l = 3
-
Shaker sortChng trnh
28
l=0; r=n-1; k=n-1; //khi gn cc gi tr//k l v tr xy ra hon v sau cng while(ll){ if(a[j]
-
Shaker sortChng trnh (tt)
29
j=l; //y phn t ln v cuiwhile(ja[j+1])
{HoanVi(a[j], a[j+1]); HoanVi(a[j], a[j+1]); k=j; //lu li v tr xy ra hon v
}j++;
}r=k; //loi cc phn t c th t cui dy
}
-
Selection Sort30
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.
-
Selection SortGii thut
31
Cc bc ca gii thut:1. i = 0.2. Tm a[min] nh nht trong dy t a[i] n a[n-1]3. Hon v a[min] v a[i]4. Nu i n th tng i v lp li bc 2
Ngc li: Dng thut ton
-
Selection SortV d
32
15 2 8 7 3 6 9 17
2 15 8 7 3 6 9 17
2 3 8 7 15 6 9 17
i = 0
i = 1
i = 2
2 3 6 7 15 8 9 17
2 3 6 7 15 8 9 17
2 3 6 7 8 15 9 17
2 3 6 7 8 9 15 17
2 3 6 7 8 9 15 17
i = 3
i = 4
i = 5
i = 6
i = 7
-
Selection SortChng trnh
33
void SelectionSort(int a[], int n){int min; //ch s ca phn t nh nhtfor(int i=0; i
-
Selection Sortnh gi
34
void SelectionSort(int a[], int n){int min; for(int i=0; i
-
Selection Sortnh gi
35
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
=
1 )1()1(n nnin
S php gn: Tt nht:
Xu nht:
S php so snh = =
=
0 2)1()1(
i
nnin
1
04 4
n
in
=
=
=
+=+
1
0 2)7()14(
n
i
nnin
-
Insertion Sort36
Cch xp cc qun bi dng thut ton Insertion Sort:
Tay tri l dy cc qun bi c th t, khi cm 1 qun bi mi ln th tm v tr ng ca n v chn vo.
Cch tm: ln lt so snh qun bi mi vi cc qun bi trong dy ban u.
-
Insertion SortGii thut
37
Gii thut: Xem dy a0, a1, , an-1 c i phn t u tin a0, a1, ,
ai-1 c th t. Tm cch chn phn t ai vo v tr thch hp dy a0, i 0
a1, , ai c th t.
Cho dy ban u a0, a1, , an-1, c th xem nh on gm 1 phn t a0 c sp.
Thm vo a1 s c a0, a1 c sp, tip tc thm a2, a3cho n khi thm an-1
-
Insertion SortV d
38
15 2 8 7 3 6 9 17
2 15 8 7 3 6 9 17
2 8 15 7 3 6 9 17
i = 1
i = 2
i = 3 2 8 15 7 3 6 9 17
2 7 8 15 3 6 9 17
2 3 7 8 15 6 9 17
2 3 6 7 8 15 9 17
2 3 6 7 8 9 15 17
i = 3
i = 4
i = 5
i = 6
i = 7
-
Insertion SortGii thut
39
Cc bc ca gii thut:1. Xut pht t i = 1.2. Tm v tr pos thch hp trong on a[0] n a[i-1] chn
a[i].3. Di ch cc phn t t a[pos] n a[i-1] sang 1 v tr
chn a[i].4. a[pos] = a[i]5. Tng i.
5.1 Nu i n: lp li bc 25.2 Ngc li: dng
-
Insertion SortChng trnh
40
void InsertionSort(int a[], int n){
for(int i=1; i=0 && a[pos] > x) //tm pos{
a[pos+1]=a[pos]; //di v sau 1 v trpos--;
}a[pos+1] = x;
}}
-
Insertion SortBi tp
41
Cho bit cc gi tr i, pos tng ng khi dng thut ton Insertion Sort sp xp mng A gim dn.A = {2, 9, 5, 12, 20, 15, -8, 10}
-
Insertion SortNhn xt
42
Nhn xt:on a[0] n a[i-1] lun lun c sp:
Vic tm v tr chn c th dng gii thut tm kim nh phn.Nu dng gii thut tm kim nh phn th vn phi tr gi Nu dng gii thut tm kim nh phn th vn phi tr gi cho thao tc di cc phn t sau x.
Sinh vin t ci t.
-
Insertion Sortnh gi
43
void InsertionSort(int a[], int n){
for(int i=1; i=0 && a[pos] > x)
S ln lp i
while(pos>=0 && a[pos] > x) {
a[pos+1]=a[pos]; pos--;
}a[pos+1] = x;
}}
S ln lp pos
-
Insertion Sortnh gi
44
So snh: Tt nht:
Xu nht:
1
12 2 ( 1)
n
in
=
= 1
2 ( 1)n
i n n
= Xu nht:
Gn: Tt nht:
Xu nht:
1
13 3( 1)
n
in
=
=
12 ( 1)
ii n n
=
=
1
1
( 1)(3 ) 3( 1)2
n
i
n ni n
=
+ = +
-
Quick sort45
Cc gii thut Bubble sort, Selection sort, Insertion sort: D hiu, d ci t Hiu qu thp: O(n2) Hiu qu thp: O(n )
Cc gii thut sp xp da trn so snh: phc tp n log2n.
Quick sort (C. A. R. Hoare, 1962) c th t c phc tp trn.
-
Quick Sort tng
46
Da trn vic phn hoch dy ban u thnh 2 phn: Dy con 1: a0, a1, , ai c gi tr nh hn x Dy con 2: aj, , an-1 c gi tr ln hn x. Dy con 2: aj, , an-1 c gi tr ln hn x.Dy ban u c phn thnh 3 phn:
Phn 2 c th t Phn 1, 3: cn sp th t, tin hnh phn hoch tng dy
con theo cch phn hoch dy ban u (chia tr)
akxk = 0 i k = i+1 j k = j+1, n-1
-
Quick SortGii thut
47
Gii thut phn hoch thnh 2 dy con:1. Chn phn t a[k] trong dy lm gi tr mc, 0 k r-1
x=a[k], i = 0, j = r-1.Thng chn phn t gia dy: k = (l+r)/2
2. Pht hin v hiu chnh cp phn t a[i], a[j] sai v tr2. Pht hin v hiu chnh cp phn t a[i], a[j] sai v tr2.1 Trong khi (a[i] < x), tng i.2.2 Trong khi (a[j] >x), gim j.2.3 Nu i
-
Quick SortV d
48
Phn hoch dy ban u: l = 0, r = 7, x = a[3]
Phn hoch on l = 0, r = 3, x = a[1]
15 2 8 7 3 6 9 17
6 2 3 7 8 15 9 17i = 3, j = 3i=0, j = 5; i = 2, j = 4
Phn hoch on l = 0, r = 3, x = a[1]
Phn hoch on l = 1, r = 3, x = a[2]
6 2 3 7 8 15 9 17
2 6 3 7 8 15 9 17i=1, j = 0
i=0, j = 1
2 6 3 7 8 15 9 17
2 3 6 7 8 15 9 17i=2, j = 1
i=1, j = 2
-
Quick SortV d
49
Phn hoch on l = 2, r = 3, x = a[2]
Phn hoch on l = 3, r = 7, x = a[5]
2 3 6 7 8 15 9 17i=3, j = 1
Phn hoch on l = 3, r = 5, x = a[4]
Phn hoch on l = 6, r = 7, x = a[6]
2 3 6 7 8 15 9 17i=5, j = 6i=6, j = 5
2 3 6 7 8 9 15 17i=5, j = 3
2 3 6 7 8 9 15 17
-
Quick SortChng trnh
50
void QuickSort(int a[], int l, int r){
i = l; j = r; x = a[(l+r)/2];do {
while (a[i] < x) i++;while (a[j] > x) j--;if (i
-
Quick SortBi tp
51
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}
-
Quick Sortnh gi
52
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.hoch khng ng u. Tt nht: O(n*log2n) Trung bnh: O(n*log2n) Xu nht: O(n2)
-
Quick SortDanh sch lin kt Vi danh sch lin kt:
Quick sort sp xp hiu qu nht trn danh sch lin kt.
Lu : khi ci t trn danh sch lin kt, phn t mc
53
m c duy nht hp l l phn t u xu.
-
Quick SortDanh sch lin kt Gii thut Quick sort cho DSLK:
Bc 1: chn x lm mc l phn t u DSLK. Bc 2: Tch DSLK thnh 2 DSLK con L1 (cc phn
t x), L2 (cc phn t >x).
54
Bc 3: QuickSort(L1) Bc 4: QuickSort(L2) Bc 5: Ni L1, X v L2 li
-
Quick SortDanh sch lin kt
Tch L thnh L1, X v L2
4 9 3 4 2 19 12
3 4 2 4 9 19 12
55
Tch L1 thnh L11, X1 v L1232 4
L11 X1 L12
2 3 4
L1 X
Ni L11, X, L12
L2
-
Quick SortDanh sch lin ktTch L2 thnh L21, X2 v L22
Tch L22 thnh L221, X22 v L222
9 19
X2 L22
19
12
12
56
Ni L221 v X22 thnh L22
Ni L21, X2 v L22 thnh L2
Ni L1, X v L2 thnh L
1912
L221 X22
19129
2 3 4 191294
1912