bg ctdlgt (v10)

56
Bµi gi¶ng CÊu tróc DL&GT Ch¬ng 1 kh¸I qu¸t chung vÒ cÊu tróc d÷ liÖu vµ gi¶I thuËt I Vai trß cÊu tróc d÷ liÖu vµ gi¶i thuËt trong mét ®Ò ¸n tin häc 1. Gi¶i thuËt vµ cÊu tróc d÷ liÖu ViÖc t¹o ra mét phÇn mÒm lµ mét qu¸ tr×nh phøc t¹p, nã lµ mét khoa häc vµ còng lµ mét nghÖ thuËt. Nã ®îc thùc hiÖn gåm c¸c bíc sau: 1. Ph©n tÝch vµ ®Æc t¶ bµi to¸n 2. T×m thuËt to¸n vµ chän cÊu tróc d÷ liÖu 3. ViÕt ch¬ng tr×nh b»ng ng«n ng÷ lËp tr×nh 4. Ch¹y thö vµ söa lçi 5. B¶o tr× ch¬ng tr×nh Trong bíc 1 ph¶i ph©n tÝch vÊn ®Ò mét c¸ch chÝnh x¸c, tríc hÕt ph¶i x¸c ®Þnh ®îc ®Çu ra (Output) lµ g× ? vµ ®Ó x¸c ®Þnh nã cÇn ph¶i tr¶ lêi nhiÒu c©u hái. Tõ thuËt to¸n (Algorithm) trong tin häc ®îc hiÓu lµ mét sè c¸c thao t¸c nµo ®ã mµ m¸y tÝnh ®iÖn tö cã thÓ thùc hiÖn ®- îc sao cho sau mét sè h÷u h¹n c¸c bíc cho ra kÕt qu¶. a. Gi¶i thuËt : ThuËt to¸n lµ mét hÖ thèng chÆt chÏ vµ râ rµng c¸c qui t¾c nh»m x¸c ®Þnh mét d·y c¸c thao t¸c trªn nh÷ng ®èi tîng sao cho sau mét sè h÷u h¹n bíc thùc hiÖn c¸c thao t¸c th× cho kÕt qu¶. - C¸c ®Æc trng cña gi¶i thuËt : * TÝnh x¸c ®Þnh Gi¶i thuËt bao gåm c¸c bíc râ rµng. Trong cïng mét ®iÒu kiÖn th× kÕt qu¶ cña mçi bíc lµ x¸c ®Þnh. * TÝnh h÷u h¹n dõng Gi¶i thuËt sau mét sè h÷u h¹n bíc th× cho kÕt qu¶. * TÝnh ®óng ®¾n Sau khi thùc hiÖn c¸c bíc cña gi¶i thuËt ph¶i cho ®îc kÕt qu¶ mong muèn, kÕt qu¶ ®ã ®îc x¸c ®Þnh theo ®Þnh nghÜa cã tríc. * TÝnh phæ dông Gi¶i thuËt ph¶i gi¶i quyÕt ®îc cho mét líp bµi to¸n. * TÝnh cã ®¹i l îng vµo ra B¾t ®Çu mét gi¶i thuËt lµ viÖc nhËn d÷ liÖu vµo( input ) - kÕt thóc gi¶i thuËt lµ mét sè kÕt qu¶( d÷ liÖu ra - output ). Trang 1

Upload: do-van-tuan

Post on 09-Sep-2015

226 views

Category:

Documents


4 download

DESCRIPTION

Cấu truc dữ liệu và giải thuật cao đằng

TRANSCRIPT

Chng 1: Cc khi nim c bn

Bi ging Cu trc DL&GT

Chng 1

khI qut chung v cu trc d liu v giI thut

I Vai tr cu trc d liu v gii thut trong mt n tin hc1. Gii thut v cu trc d liu

Vic to ra mt phn mm l mt qu trnh phc tp, n l mt khoa hc v cng l mt ngh thut. N c thc hin gm cc bc sau:

1. Phn tch v c t bi ton

2. Tm thut ton v chn cu trc d liu

3. Vit chng trnh bng ngn ng lp trnh

4. Chy th v sa li

5. Bo tr chng trnh

Trong bc 1 phi phn tch vn mt cch chnh xc, trc ht phi xc nh c u ra (Output) l g ? v xc nh n cn phi tr li nhiu cu hi.

T thut ton (Algorithm) trong tin hc c hiu l mt s cc thao tc no m my tnh in t c th thc hin c sao cho sau mt s hu hn cc bc cho ra kt qu.

a. Gii thut : Thut ton l mt h thng cht ch v r rng cc qui tc nhm xc nh mt dy cc thao tc trn nhng i tng sao cho sau mt s hu hn bc thc hin cc thao tc th cho kt qu.

- Cc c trng ca gii thut :

* Tnh xc nhGii thut bao gm cc bc r rng. Trong cng mt iu kin th kt qu ca mi bc l xc nh.* Tnh hu hn dngGii thut sau mt s hu hn bc th cho kt qu.* Tnh ng nSau khi thc hin cc bc ca gii thut phi cho c kt qu mong mun, kt qu c xc nh theo nh ngha c trc.* Tnh ph dngGii thut phi gii quyt c cho mt lp bi ton.* Tnh c i lng vo raBt u mt gii thut l vic nhn d liu vo( input ) - kt thc gii thut l mt s kt qu( d liu ra - output ).* Tnh hiu quTnh hiu qu ca mt gii thut c nh gi da vo cc tiu chun sau:

- Dung lng b nh cn thit

- S lng php tnh cn thc hin

- Thi gian cn thit chy

- D hiu v d ci t

b. Cu trc d liu(CTDL : Data Structures)

Cc cu trc d liu (CTDL: Data Structures) dng t chc d liu cho mt bi ton gm hai loi: CTDL c mt ngn ng bn s dng nh ngha trc v CTDL do ngi lp trnh nh ngha.

Trong C,C++ c cc CTDL c nh ngha trc nh: kiu nguyn, thc, k t, logic, lit k, min con, mng, bn ghi, tp hp, tp tin, chng trnh con, kiu con tr v kiu i tng.

Trong nhiu trng hp, cn phi t chc d liu thnh cc cu trc cha c nh ngha trong ngn ng. Chng trnh mn hc Cu trc d liu v gii thut s gii thiu mt s CTDL ph bin do ngi lp trnh nh ngha v cc thut ton trn nhng CTDL .

Thut ton v CTDL l vn quan trng ca mt chng trnh, n c mi quan h qua li khng kht v cht ch vi nhau, thut ton ng n v CTDL hiu qu s cho ra mt chng trnh hon thin. C CTDL tt th thut ton mi c t chc cht ch, phn nh ng thc t, ph hp vi cc thao tc.

Khi xy dng mt CTDL nhng vn m ngi lp trnh cn phi quan tm:

Phi mang y thng tin ca i tng trong yu cu bi ton (chng trnh) v nn phn nh ng, ph hp vi thc t.

T chc cc thng tin trong cu trc phi c trnh t (trnh t theo i tng trong th gii thc).

Kiu d liu phi nh ngha ph hp vi tng thng tin trong cu trc.

Phi c t chc tit kim b nh.

Cu trc d liu tt th thut ton x l bi ton mi ti u. Chnh v vy, Niklaus wirth tng kt :

- V tr ca cu trc d liu trong mt n tin hc:

V d:

- Vn trong thc t: Bi ton qun l trong mt trng hc, qun l ban hng- Cc i tng: Gio vin, CBCNV, sinh vin, cc lp hc, cc mn hc, phng hc, thi gian hc, im, ti sn,. . .

- Quan h gia cc i tng:

+ Lp hc v sinh vin: danh sch mi lp hc

+ Mn hc, phng hc, thi gian: thi kha biu

+ Mn hc, im, sinh vin : hc b

- Thao tc trn cc i tng

+ To danh sch cho cc lp

+ Thm 1 sinh vin vo lp

+ Xo 1 sinh vin khi lp

+ Cp nht thng tin mi cho 1 sinh vin

+ To thi kho biu

2. Cu trc d liu v cc vn c lin quan

D liu nguyn t: l d liu bao gm tp cc phn t c s (c th l mt ch s, k t)

Cc cch(manners) kh d theo lin kt chng li vi nhau s to thnh cc cu trc d liu khc nhau.

La chn mt cu trc d liu thch hp t chc d liu vo v trn c s xc nh gii thut. Gn y cc lp khi nim v CTDL pht trin ng k.

V d: Vct, ma trnbi tp phi s.

- Cc thao tc trn CTDL: to lp, hu b mt cu trc, truy nhp, b sung... T khi chn mt CTDL phi ngh ngay ti cc php ton tc dng trn cu trc y v ngc li.

- Cu trc lu tr: l cch biu din mt CTDL trong b nh - chnh l ci t cu trc y ln MT trn c s thc hin cc php x l:

Cu trc lu tr -> Cu trc lu tr trong: Lu tr vi b nh trong.

-> Cu trc lu tr ngoi: Lu tr vi b nh ngoi.

- Thng trong ngn ng lp trnh bao gi cng c cc CTDL tim nh: mng, bn ghiTa chp nhn mt ngn ng l chp nhn cc cu trc tim nh .

3. Ngn ng din t gii thut

* Cc cu lnh

+ Php gn: V=E; A=B=1;

+ Lnh ghp : {

lnh1; lnh2; lnh3;

}+ Lnh iu kin:

if BT Lnh1;

if BT Lnh1; else Lnh2;

+ Lnh la chn:

switch(BT)

{

case (ds1): lnh1;break;

case (ds2): lnh2; break;

case (ds3): lnh3; break;

case (dsn):lnhn;

}

+ Lnh lp:

+ Chng trnh con:

Kiu dl ([]);

{

Lnh 1; Lnh2;,Lnhn;

}II Cc tiu chun nh gi cu trc d liu v phc tp ca gii thut

1. Tiu chun nh gi

- Khi xy dng thut ton gii mt bi ton, c th c nhiu yu cu t ra nh:

+ Tnh ng n ca thut ton. Thng thng ta ci t chng trnh th hin thut ton ri th n nh vo cc d liu nhp vo. Cch th ny ch pht hin li sai ch cha bo m tnh ng. chng minh tnh ng n ca thut ton trong cc ti liu ngi ta thng dng cc cng c ton hc. Chng hn chng minh tnh ng ca thut ton quy ngi ta dng php quy np ca ton hc...

+ Tnh n gin ca thut ton theo ngha thut ton d hiu, d lp trnh v d hiu chnh.

+ Tnh hiu qu ca thut ton theo ngha n c s dng hiu qu ti nguyn ca my v thi gian thc hin nhanh.

- Tu theo chng trnh ch dng mt t ln hoc nhiu ln m tnh n gin c ch hn hoc tnh hiu qu ch hn.

- nh gi hiu qu ca mt thut ton, mt trong cc yu t c ch l thi gian thc hin ca thut ton.

2. phc tp ca gii thutKhi ta xy dng mt hm nh gi s ph thuc vo kch thc ca d liu gi l phc tp thut ton. Hm c dng T().

phc tp ca thut ton k hiu l O(T(n)) // O ln

- Qui tc hng s: Khi ta nhn hay chia phc tp ca thut ton vi mt hng s th phc tp khng thay i.

- Quy tc tng: nu T1(n) v T2(n) l thi gian thc hin 2 on chng trnh con p1 v p2 tng ng c nh gi l O(f(n)) v O(g(n)) th thi gian thc hin xong ctc p1 ri tip n ctc p2 l:

- Quy tc tch: nu T1(n) v T2(n) l thi gian thc hin 2 on chng trnh con p1 v p2 tng ng c nh gi l O(f(n)) v O(g(n)) th thi gian thc hin ctc p1 v ctc P2 lng nhau s l:

V d 1: Nu T(n) = aknk + ak-1nk-1 + ...+a1n + a0

Th T(n) = O(nk)

V d 2:Chng trnh c 3 bc thc hin m thi gian chy tng bc tng ng l: O(n2), O(n3) v O(n*log2n). Th thi gian chy chng trnh l O(n3) {tnh theo quy tc tng}V d 3: Lnh gn S := S+1 c thi gian thc hin l c(const) c nh gi l O(1), khi :

- Lnh for (i=1;i phc tp n.O(1) hay O(n)

- Lnh for (i=1;i Ghi tp

- Phng php thit k Top-Down design: Gip ta nh hng r rng, trnh xa vo chi tit ph-> l nn tng cho lp trnh c cu trc, vi nhng bi tp ln cho php tch ra lm nhiu phn d x l v nhiu ngi cng thc hin c.

1.2. Phng php tinh chnh tng bc

B1: Biu din tng bng ngn ng t nhin

B2: C th tng phn, thay i bng ngn ng chng trnh

B3: Cui cng ta c chng trnh

Th d : Bi ton sp xp mt dy sB1:

{

Chn s b nht trong n s vo v tr th 1

Chn s b nht trong n-1 s cn li vo v tr th 2

Chn s b nht trong 2 s cn li vo v tr th n-1

}

B2:=> for( i= 1;i for( i= 1;i xn . Nu x[i] > cc s th li ly s lm s Bn }

B3:for( i= 1;i Thi gian thc hin mt thut ton ph thuc vo:

+ Kch thc d liu a vo, nu gi n l kch thc d liu a vo th thi gian thc hin T ca thut ton l hm ca n : T(n)

+ Tc x l ca my, cht lng m sinh ca chng trnh dch.

+ Thi gian thc hin ca thut ton.

phc tp thi gian l mt hm t l vi kch thc d liu: k hiu T(n) vi n- kch thc d liu vo.

Tuy nhin, T(n) khng th biu din c th thnh n v thi gian l giy, pht ... (do cc my tnh c cu hnh khc nhau, h thng khc nhau...). Mc d nh vy, chng ta hon ton c th so snh c da vo gi tr ca hm.

V d :

Gii thut 1 - phc tp thi gian T1(n) = a*n2 a:constGii thut 2 - phc tp thi gian T2(n) = k*n k:const=> Khi n ln r rng T1(n) >= T2(n). vy gii thut 1 chm hn gii thut 2.

-> phc tp ca mt thut ton:

- Nu thi gian thc hin thut ton T(n) = a*n2-> Ta ni rng thut ton ny c cp l n2 v k hiu:

T(n) = O(n2)

- Tng qut:

Hm f(n) c xc nh l O(g(n)) nu tn ti cc hng s c v n0 sao cho:

f(n)=n0

Ni cch khc, k t gi tr n0 th f(n) b chn trn bi 1 hng s nhn vi g(n)

V d: f(n) = (n+1)2 =1

Cc thut ng thng dng cho phc tp ca mt gii thut. phc tp

Thut ng

O(1)

phc tp hng s

O(logn)

phc tp Logarit

O(n)

phc tp tuyn tnh

O(nlogn)

phc tp nlogn

O(nb)

phc tp a thc

O(bn), b> 1

phc tp hm m

O(n!)

phc tp n!

IV Cc cu trc d liu cn bn

1. Khi nim v cu trc d liu

nh ngha : Ta gi 1 kiu d liu T l 1 cp c 2 thnh phn T Trong :

- V (Values) l tp hp cc gi tr m 1 bin thuc kiu c th nhn c.

- O(Operators) l tp hp cc thao tc trn tp V

V d 1: Kiu s t nhin T(n)=

Vi V = {0, 1, 2, ... }

O = { +, -, *,/, %(mod), /(div), = , , ...}

V d 2 : Kiu Lun l T(Boolean)=

ViV = {True(1), False(0)}

O = {&&, ||, !, , =...}

Ta c th nh ngha mt CTDL da trn cc kiu d liu c nh ngha trc cho mt ngn ng no .

V d 3 : nh ngha mt cu trc l mt mng gm 50 s nguyn c du:

int a[50];

V d 4 : nh ngha mt cu trc mang thng tin ca Sinh vin

Typedef struct sinhvien { int tuoi; char *ten; char *lop; };* Ch : mng, struct l mt kiu d liu c cu trc trong ngn ng C. Vic nh ngha cc cu trc v thut ton khng ph thuc vo ngn ng, c th biu din cu trc d liu bng mt ngn ng bt k. Tuy nhin thng nht trong ti liu, chng ta dng ngn ng C m t.

2. Cc kiu d liu c bn

a. Kiu k t (char)

D liu k t c th cha bt k k t no:

* Ch s t 0 n 9

* Ch ci t A n Z, a n z

* Cc k t t bit:#,$,&..Mt s hm sn c trong ngn ng c:

1. So snh 2 chui: strcmp

2. Sao chp 2 chui: strcpy

3. Kim tra 1 chui nm trong chui kia: strstr

4. Ct 1 t ra khi 1 chui: strtok

5. i 1 s ra chui: itoa

6. i 1 chui ra s: atoi, atof, ...

7. i 1 hay 1 s gi tr ra chui: sprintf

8. Nhp mt chui: gets

9. Xut mt chui: putsb. Kiu d liu s (int, long , float, double) Kiu s nguyn (int, long )

KiuPhm vi biu dinKch thc

Int-32768 n 327672 byte

Long (int)-2147483648 n 21474836474 byte

Kiu du phy ng (float, double)

KiuPhm vi biu dinS ch s c nghaKch thc

Float3.4E-38 -> 3.4E+387-84 byte

Double1.7E-308->1.7E+30815-168 byte

c. Kiu d liu logicC khng nh ngha kiu logic (boolean) m n n gin ng nht mt gi tr nguyn khc 0 vi gi tr TRUE v gi tr bng 0 vi gi tr FALSE khi c nhu cu xt cc gi tr logic.3. Cc kiu d liu cu trc

a. Kiu mng

Kiu d liu mng l kiu d liu trong mi phn t ca n l mt tp hp c th t cc gi tr c cng cu trc c lu tr lin tip nhau trong b nh. Mng c th mt chiu hay nhiu chiu. Mt dy s chnh l hnh tng ca mng 1 chiu, ma trn l hnh tng ca mng 2 chiu.

Mt iu ng lu l mng 2 chiu c th coi l mng mt chiu trong mi phn t ca n l 1 mng mt chiu. Tng t nh vy, mt mng n chiu c th coi l mng 1 chiu trong mi phn t l 1 mng n-1 chiu, iu ny c th hin rt r trong cch khai bo ca C.

Mng 1 chiu c khai bo nh sau:

[];

V d 1: khai bo mt bin c tn a l mt mng nguyn 1 chiu c ti a 100 phn t ta phi khai bo nh sau: int a[100];

Ta cng c th va khai bo va gn gi tr khi ng cho mt mng nh sau:

int a[5] = (1, 7, -3, 8, 19);

Trong trng hp ny C cho php ta khai bo mt cch tin li hn

int a[] = (1, 7, -3, 8, 19);

Nh ta thy, ta khng cn ch ra s lng phn t c th trong khai bo. Trnh bin dch ca C s t ng lm vic ny cho chng ta.

Tng t ta c th khai bo mt mng 2 chiu hay nhiu chiu theo c php sau:

[][]...;

V d 2 : Trong C ta khai bo int a[10] => mng a cha c 10 phn t kiu d liu l int

Mt s kiu mng khc : float c[100], d[5][7];

V d 3: ta c th khai bo: int a[100][150];b. Kiu cu trc

Nu kiu d liu mng l kiu d liu trong mi phn t ca n l mt tp hp c th t cc gi tr c cng cu trc c lu tr lin tip nhau trong b nh th mu tin l kiu d liu m trong mi phn t ca n l tp hp cc gi tr c th khc cu trc. Kiu mu tin cho php chng ta m t cc i tng c cu trc phc tp.

Khai bo tng qut ca kiu struct nh sau:

typedef struct

{

; ;};

V d 3 : Trong C ta khai bo

typedef struct hocsinh

{char hoten[20]; float diem; };=> Khai bo mt kiu cu trc c tn l hocsinh gm hai thnh phn:

- H tn hc sinh (hoten)

- im thi (diem) ca hc sinh.

ng thi ta cng nh ngha bin hs l bin n c cc thnh phn l cu trc hocsinh.

Hoc

typedef struct

{ char hoten[20]; float diem; } hocsinh;Bi tp: Cc kiu trn hc v vy hy lit k:

+ Tp cc gi tr V

+ Tp cc thao tc O

Cho tng kiu d iu

Chng 2 QUY V GII THUT QUY1. Khi nim v quyTa ni mt i tng l quy nu n c nh ngha qua chnh n hoc mt i tng khc cng dng vi chnh n bng quy np.

V d: t hai chic gng cu i din nhau. Trong chic gng th nht cha hnh chic gng th hai. Chic gng th hai li cha hnh chic gng th nht nn tt nhin n cha li hnh nh ca chnh n trong chic gng th nht mt gc nhn hp l, ta c th thy mt dy nh v hn ca c hai chic gng.

Mt v d khc l nu ngi ta pht hnh trc tip pht thanh vin ngi bn my v tuyn truyn hnh, trn mn hnh ca my ny li c chnh hnh nh ca pht thanh vin ngi bn my v tuyn truyn hnh v c nh th.Trong ton hc, ta cng hay gp cc nh ngha quy:

Giai tha ca n (n!): Nu n = 0 th n! = 1; nu n > 0 th n! = n.(n-1)!

2. Gii thut quyNu li gii ca mt bi ton P c thc hin bng li gii ca bi ton P' c dng ging nh P th l mt li gii quy. Gii thut tng ng vi li gii nh vy gi l gii thut quy. Mi nghe th c v hi l nhng im mu cht cn lu l: P' tuy c dng ging nh P, nhng theo mt ngha no , n phi nh hn P, d gii hn P v vic gii n khng cn dng n P.

Trong C, ta thy nhiu v d ca cc hm v th tc c cha li gi quy ti chnh n, by gi, ta tm tt li cc php quy trc tip v tng h c vit nh th no:

nh ngha mt hm quy hay th tc quy gm hai phn:

* Phn neo (anchor): Phn ny c thc hin khi m cng vic qu n gin, c th gii trc tip ch khng cn phi nh n mt bi ton con no c.

* Phn quy: Trong trng hp bi ton cha th gii c bng phn neo, ta xc nh nhng bi ton con v gi quy gii nhng bi ton con . Khi c li gii (p s) ca nhng bi ton con ri th phi hp chng li gii bi ton ang quan tm.

Phn quy th hin tnh quy np ca li gii. Phn neo cng rt quan trng bi n quyt nh ti tnh hu hn dng ca li gii.3. V d v gii thut quy3.1. Hm tnh giai thaInt giaithua(int n); //Nhn vo s t nhin n v tr v n!{if (n == 0) return 1; //Phn neoelse return n *giaithua(n - 1); //Phn quy} y, phn neo nh ngha kt qu hm ti n = 0, cn phn quy (ng vi n > 0) s nh ngha kt qu hm qua gi tr ca n v giai tha ca n - 1.

V d: Dng hm ny tnh 3!, trc ht n phi i tnh 2! bi 3! c tnh bng tch ca 3*2!. Tng t tnh 2!, n li i tnh 1! bi 2! c tnh bng 2*1!. p dng bc quy np ny thm mt ln na, 1! = 1*0!, v ta t ti trng hp ca phn neo, n y t gi tr 1 ca 0!, n tnh c 1! = 1*1 = 1; t gi tr ca 1! n tnh c 2!; t gi tr ca 2! n tnh c 3!; cui cng cho kt qu l 6:

3! = 3 * 2! 2! = 2 * 1! 1! = 1 * 0! 0! = 13.2. Dy s FibonacciDy s Fibonacci bt ngun t bi ton c v vic sinh sn ca cc cp th. Bi ton t ra nh sau:

Cc con th khng bao gi chtHai thng sau khi ra i, mi cp th mi s sinh ra mt cp th con (mt c, mt ci)

Khi sinh con ri th c mi thng tip theo chng li sinh c mt cp con mi.Gi s t u thng 1 c mt cp mi ra i th n gia thng th n s c bao nhiu cp. V d, n = 5, ta thy:Gia thng th 1:1 cp (ab) (cp ban u)

Gia thng th 2:1 cp (ab) (cp ban u vn cha )

Gia thng th 3:2 cp (AB)(cd) (cp ban u ra thm 1 cp con)

Gia thng th 4:3 cp (AB)(cd)(ef) (cp ban u tip tc )

Gia thng th 5:5 cp (AB)(CD)(ef)(gh)(ik) (c cp (AB) v (CD) cng ) By gi, ta xt ti vic tnh s cp th thng th n: F(n)

Nu mi cp th thng th n - 1 u sinh ra mt cp th con th s cp th thng th n s l:F(n) = 2 * F(n - 1)Nhng vn khng phi nh vy, trong cc cp th thng th n - 1, ch c nhng cp th c thng th n - 2 mi sinh con thng th n c thi. Do F(n) = F(n - 1) + F(n - 2) (= s c + s sinh ra). Vy c th tnh c F(n) theo cng thc sau:

F(n) = 1 nu n # 2

F(n) = F(n - 1) + F(n - 2) nu n > 2int Fibo(int n); //Tnh s cp th thng th n{if n m)return (ucln(n-m,m);

else return (ucln(n,m-n);

}Chng 3danh sch (list)I Khi nim

- Danh sch l tp hp cc phn t(element) a1, a2,...an m chng c chung tnh cht l nu bit c v tr ca phn t th ai th bit c v tr ca phn t ai+1.

S phn t ca danh sch (n) c gi l chiu di(length) ca danh sch, nu danh sch khng cha phn t no (n=0) ta c mt danh sch rng (Empty List).

Mt tnh cht quan trng ca danh sch l cc phn t c sp xp tuyn tnh theo v tr ca chng trong danh sch.

- Danh sch l mt CTDL rt thng gp nh danh sch nhn vin ca c quan, danh sch sinh vin, danh sch mt hng...

- C 2 cch biu din danh sch:

+ Danh sch c (Mng).

+ Danh sch lin kt.

- Cc thao tc trn mt danh sch:

+ Thm 1 phn t vo danh sch.

+ Xo 1 phn t khi danh sch.

+ Tm 1 phn t trong danh sch.

+ Thay th 1 phn t ca danh sch bi 1 phn t khc.

+ Chn 1 phn t mi vo sau hay trc 1 phn t no .

+ Sp xp th t 1 danh sch theo 1 th t no .

+ Ghp 2 danh sch thnh 1 danh sch.

+ Tch 1 danh sch thnh nhiu danh sch.

- Tu theo tng trng hp, yu cu bi ton cn mt s thao tc no m ta nn t chc cu trc ca danh sch cho ph hp vi yu cu v d thao tc nht.

II Ci t danh sch trn mng

1. nh ngha

Danh sch c(mng) l danh sch m cc phn t c sp xp k tip nhau trong b nh, phn t th i+1 c ng sau phn t th i, qun l da theo ch mc.

Ta c th khai bo mt danh sch c l mt dy s nguyn a[1], a[2],...,a[n] nh sau:Const

max=100;

int a[max];

int i,j,n;

2. Cu trc lu tr mng

- a ch mng a[i]=L0+C*(i-1) trong L0 : l a ch gc

-> Hm tnh a ch : f(i)=C*(i-1)

- Khi cn di ca ch s l mt s nguyn b no th

a[i]=L0+C*(i-b)

- Ch : Vi ma trn 3 hng 4 ct th khi lu tr k tip s u tin ct(vi ngn ng Fortran).

a11a21a31a12a22a32a13a23a33a14a24a34

- tnh a ch a[i,j]=L0+(i-1)*3+(i-1)

- Trng hp tng qut vi ma trn n hng, m ct

a[i,j]=L0+(i-1)*n+(i-1)

* Cc thao tc trn mng

- Thut ton 1: Chn phn t T vo v tr th i (cc phn t a[i] n a[k] c chuyn sang v tr k tip)

{

for (j=k;j=k;j++)

a[j]=a[j+1]; // ln phn t th i

k=k-1; //gim chiu di ca mng

}

* u nhc im ca mng- u im: Truy xut ngu nhin mt phn t trong danh sch(da theo ch mc).

Cp pht b nh mt ln. C tht ton hiu nng cao tm kim(thut ton tm kim nh phn)

Mt s dng b nh 100%

- Nhc im: Vic cp pht c nh mt vng nh s lm lng ph nu khng s dng ht v khng c lu tr qu vng nh c cp pht.

Khng ph hp vi php thm v xo v s php di qu nhiu.

*Bi tp : Vit cc thut ton trn thnh mt chng trnh con y */3. Lu tr k tip ca danh sch tuyn tnh

Gi s ta khai bo mt mng nh sau:

int a[n];

- Cch lu tr ny tn b nh nhng thi gian truy nhp nhanh.

4. Stack hay danh sch ngn xp

a. nh ngha: Stack l mt danh sch tuyn tnh c bit m php b sung v loi b lun lun c thc hin mt u gi l nh. Hay cn gi l danh sch LIFO(Last In First Out)

V d: - hnh nh chng a l Stack

b. Lu tr Stack bng mng(lu tr k tip)

- C th lu tr Stack bi mt vecter lu tr s gm n phn t nh k tip.

Nu Top l a ch ca phn t nh ca Stack th Top s c gi tr bin i khi Stack hot ng.

Nu quy c dng a ch tng i(nh ch s) th khi Stack rng Top= 0 => khi thm 1 phn t vo stack th Top tng ln 1 v ngc li.

s1s2s3Sn

Thut ton 1: Kim tra stack rng

//kim tra stack rng

int empty(int stack[], int top)

{

if(top = 0 )

{

value = stack[top];

top = top - 1;

return 0;

}

else

{

printf("Stack rong, khong the lay duoc!\n");

return -1; } }Chng trnh thc hin cc thao tc trn stack//v d chng trnh stack

#include

#define MAX 10 /* s lng phn t ti a*/

#include int main()

{

int stack[MAX];

int top = -1; //stack rong

int n,value;

push(stack,top,10);

push(stack,top,5);

push(stack,top,7);

while(empty(stack,top)==0)

{

pop(stack,top,value);

printf(%d ,value);

}

return 0;

}Ghi ch: Nu ch cn trch phn t u tin ca stack m khng hu th khng c lnh: top= top-1

- Vi nhiu stack c th xy ra: mt stack b trn trong khi khng gian d tr cho stack khc vn cn ch trng.

-> khc phc: + Nu 2 stack ta khng quy nh kch thc ti a cho tng stack na, m khng gian nh dnh ra s c dng chung.

Do hin tng trn ch xy ra khi ton b khng gian nh dng ht.

+ Nu c 3 stack: lc u chia u cho 3 nhng nu c 1 stack no pht trin nhanh hn b trn trc, stack khc vn cn ch th phi dn ch cho n bng cch y stack ng sau sang phi hoc li chnh stack sang tri trong trng hp c th.

c. ng dng ca Stack

- Trong qu trnh thc hin v tr v ca cc chng trnh con, stack c dng ghi nh th t ca cc a ch phi tr v.

- Stack dng kh quy: Stack thng c dng bin i 1 gii thut quy thnh khng quy.

BT: Vit chng trnh i s trong h thp phn sang h nh phn.5. Queue hay danh sch kiu hng ia. nh ngha: Queue l danh sch tuyn tnh m php b sung c thc hin mt u gi l li sau(Rear), v php loi b c thc hin mt u khc gi l li trc(Front). Hay ngi ta cn gi l danh sch FIFO (First In First Out).

Trong thc t Queue c c nhiu ng dng:

- B m bn phm

- Qun l tin trnh- Hng i lnh trong CPU

- B m gia my tnh v my in ...

b. Lu tr Queue bng mng

c th truy nhp Queue ta dng 2 bin:

Front: Tr ti li trc - Khi loi b front tng ln 1

Rear: Tr ti li sau - Khi b sung rear tng ln 1

Thut ton 1: Kim tra Queue c rng hay khng?

int Empty(int queue[], int front, int rear)

{

if(rear==front) return 1;

else return 0;

}

Thut ton 2: Thm 1 phn t vo queue

int enQueue(int queue[ ], int &rear, int value)

{

if(rear < MAX-1)

{

rear= rear +1;

queue[rear] = value;

return 0;

}

else

{

printf("queue da day !\n");

return 0;

}

}Thut ton 3: Xo b mt phn t khi Queue

int deQueue(int queue[], int &front, int rear, int &value)

{

if(front == rear)

{

printf("Queue rong !\n");

return 0;

}

front = front + 1;

value = queue[front];

}Chng trnh thc hin cc thao tc trn Queue

#include

#define MAX 10 /* s lng phn t ti a*/

#include int main()

{

int queue[MAX];

int front,rear;

int n,value;

front=rear=(0);

enQueue(queue,rear,10);

if(empty(queue,front,rear)==1)

printf("Queue dang rong!\n");

else {

Front(queue,front,rear,value);

printf("Dau queue : %d\n",value);

}

getch();

}

Cc phng php khc phc hng b trn:+ Phng php tnh tin:

Khi thm 1 phn t vo hng trng th s thm vo phn t th 0 ca hng.

Thm 1 phn t vo hng m v tr cui cng ca phn t l n (rear = n-1) th ton b cc phn t ca hng s c dch chuyn ln (Front) v tr.

+ Phng php di chuyn vng:

Khi thm 1 phn t vo hng rng hoc c (rear = n-1) th s thm vo phn t th 0 ca hng.

int Front(int queue[], int front, int rear, int &value)

{

if(front == rear)

{

printf("Queue rong !\n");

return -1;

}

value = queue[(front+1)%MAX];

}//************************************************

int enQueue(int queue[], int front, int &rear, int value)

{

if(((rear +1)%MAX) == front)

{

printf("queue da day, khong the them %d!\n",value);

return -1;

}

rear= (rear +1)%MAX;

queue[rear] = value;

return 0;

}

//**************************************************************

int deQueue(int queue[], int &front, int rear, int &value)

{

If (front == rear)

{

Printf("Queue rong !\n");

return -1;

}

front =(front + 1)%MAX;

value = queue[front];

}III Danh sch lin kt (Linked List) Ta thy lu ttr k tip vi danh sch tuyn tnh bc l nhng nhc im trong trng hp thc hin thng xuyn cc php b sung v loi b khc phc nhc im th ngi ta t chc lu tr danh sch dng con tr hoc mc ni t chc danh sch tuyn tnh.1. Danh sch lin kt n

1.1. Nguyn tc

a. Khi nim

- Danh sch lin kt: l danh sch m cc phn t c ni vi nhau bi vng lin kt ca chng. Cc phn t trong xu c cp pht theo khng gian trng nn c th khng lin tip nhau.

- Danh sch lin kt l mt CTDL thch hp vi cc thao tc thm vo, xo b 1 phn t, ghp, tch nhiu danh sch.

- Mi phn t ca danh sch c cp pht mt vng nh trong cha 2 thnh phn:

+ Mt vng cha thng tin chnh ca phn t ny gi l vng Data.

+ Mt vng cha a ch, gi l vng lin kt Link(con tr tr n phn t k tip).

- Ngoi cc phn t thuc danh sch lin kt, ta cn s dng mt bin ch im u pHead(kiu Pointer) cha a ch ca phn t u tin ca danh sch lin kt, mt bin ch im cui ca danh sch pTail lun c gi tr Null(Null l mt gi tr kiu con tr - gi tr ny cho bit con tr khng xc nh - tc l con tr khng tr vo phn t no c).

- Ta c th hnh dung danh sch lin kt c t chc nh sau:

b. Nguyn tc

- t chc c danh sch mc ni th phi:

+ Tn ti nhng phng tin chia b nh ra thnh cc nt v mi nt c th truy nhp c vo tng trng.

+ Tn ti mt c ch xc nh c mt nt ang c s dng, hoc khng c s dng.

+ Tn ti mt c ch nh mt kho cha ch trng cung cp cc nt trng khi c yu cu s dng v thu hi li cc nt khi khng cn s dng na.

V d : Khai bo danh sch nh sau:

typedef struct tag_NODE

{int data;

struct tag_NODE* pNext;

}NODE;

typedef struct tag_LIST

{NODE *pHead;

NODE *pTail;

}LIST;1.2. Cc thao tc x l trn danh sch lin kt

Thut ton 1: Khi to danh sch lin kt

void khoitao(LIST &l)

{

l.pHead=l.pTail=NULL;

}

Thut ton 2: Kim tra danh sch rngkim tra xem danh sch c cha phn t no hay khng.

void kt_rong(LIST *pHead)

{

if(pHead==NULL) return 1;

return 0;

}Thut ton 3: Thm 1 phn t p vo u danh schu vo: pHead con tr tr ti u danh sch,

Value gi tr cn chn vo

u ra : danh sch thu c sau khi chn thm

void themdau(LIST &l,NODE *p)

{

if(l.pHead==NULL)

l.pHead=l.pTail=p;

else

{ p->pNext=l.pHead;

l.pHead=p;

}

}Thut ton 4: To 1 nt x trong dslkNODE * tao_nut(int x)

{NODE *p;

p=new NODE;

if(p==NULL)

{printf("\n khong du bo nho:");

exit(0);

}

p->data=x;

p->pNext=NULL;

return p;

}

Thut ton 5: Tm kim 1 phn t trong DSLK

. Tm kim mt phn t trong danh sch

u vo: danh sch L v mt kha x u ra: phn t trong L c gi tr kha bng kha x, hoc NULL nu khng tm thy.NODE* timx(LIST l,int x)

{

for(NODE *p=l.pHead;p;p=p->pNext)

if(p->data==x)

return p;

return NULL;

}

Thut ton 6: Xo 1 phn t u DSLK

Xa phn t khi danh sch

u vo: Danh sch L v gi t phn t cn xa

u ra: Danh sch thu c sau khi xa.int xoadau(LIST &l)

{

if(l.pHead==NULL)

return 0;

else

{

l.pHead=l.pHead->pNext;

return 3;

}

}Thut ton 7: Thm phn t vo sau phn t x ca DSLK1. Cp pht b nh lu tr phn t mi

2. Cho con tr ca phn t mi tr vo phn t sau

3. Cho con tr ca phn t hin ti tr vo phn t mi

int them_sau_y_ptx(LIST &l,int x,int y)

{

NODE *p=tao_nut(y);

NODE *q=timx(l,x);

if(l.pHead==NULL)

return 0;

if(q==NULL)

return 1;

if(q==l.pTail)

themcuoi(l);

else

{ p->pNext=q->pNext;

q->pNext=p;

return 3;

}

} Thut ton 8: Thm phn t vo cui danh sch

void themcuoi(LIST &l)

{//khoitao(l);

int x;

printf(nhap x=");

scan(%d,&x);

NODE *p=tao_nut(x);

if(l.pTail==NULL)

l.pHead=l.pTail=p;

else

{l.pTail->pNext=p;

l.pTail=p;

}

}

Thut ton 9: Xa phn t u tin ca danh sch

int xoadau(LIST &l)

{

if(l.pHead==NULL)

return 0;

else

{

l.pHead=l.pHead->pNext;

return 3;

}

}Thut ton 10 : Xo phn t sau phn t x

int xoapt_saux(LIST &l,int x)

{

NODE *p=timx(l,x);

if(l.pHead==NULL)

return 0;

if(p==NULL)

return 1;

if(p==l.pTail)

{

return 2;

}

else

{NODE *k=p->pNext;

NODE *m=k->pNext;

p->pNext=m;

}

}Thut ton 11 : trn 2 dslk thnh 1 dslk

void noi_ds2(LIST &l,LIST &l1,LIST &l2)

{

if(l1.pHead==NULL)

l=l2;

if(l2.pHead==NULL)

l=l1;

else{

l1.pTail->pNext=l2.pHead;

l.pHead=l1.pHead;

l.pTail=l2.pTail;

}

}

Thut ton 12 : tch 1 dslk thnh 2 dslk

void tach_LIST(LIST &l,LIST &l1,LIST &l2)

{

do

{

p=l.pHead;

l.pHead=p->pNext;

p->pNext=NULL;

if(p->data%2==0)

themdau2(l1,p);

else

themdau2(l2,p);

}

while(l.pHead!=NULL);

l.pTail=NULL;

}

Thut ton 13 : xut dslk ln mn hnh

void xuat(LIST l)

{for(NODE *p=l.pHead;p;p=p->pNext)

{//p=&data;

printf(%d -> ,p->data);

}

printf ("NULL");

}

* Ch : Danh sch lin kt rt thch hp vi cc loi danh sch c nhiu bin ng nh thm vo, xo b v trn 2 danh sch. Nhc im l mun duyt danh sch phi duyt tun t.

Trong phn trn chng ta bit cc loi danh sch m cc php ton thm vo v xo b c thc hin bt k v tr no trong danh sch.

=> Mc d khc phc c mt s nhc im ca danh sch tuyn tnh nhng danh sch lin kt n vn c nhng nhc im:

+ Ch c phn t u tin trong danh sch c truy nhp trc tip cn cc phn t khc ch truy nhp sau khi qua cc phn t ng trc n.

+ Tn b nh do c thm trng Link.

2. Danh sch ni vngDanh sch ni vng khc vi danh sch ni n ch link ca phn t cui khng phi l rng m l a ch ca phn t u tin ca danh sch.

=> Lm cho truy nhp nhanh hn, linh hot hn, ta c th truy nhp mi nt t nt no cng c.

Vi danh sch ni vng ch cn bit con tr tr ti nt mun loi b, ta vn thc hin c v vn tm c nt ng trc n.

Nhc im: Nu khng ch s dn ti mt chu trnh khng kt thc v khng bit c ch kt thc ca danh sch.

=> khc phc nhc im trn ta a thm mt nt c bit vo gi l nt u danh sch. Trng Data ca nt ny khng cha d liu v con tr pHead tr ti nt u danh sch.

3. Danh sch ni kp Ta thy cc kiu d liu trn ch cho php truy nhp danh sch theo mt chiu. khc phc nhc im ny th ngi ta t chc danh sch mc ni kp nh sau

Chng 4Cy (tree)

Cy l 1 CTDL phi tuyn bao gm mt tp hp n nt trong c mt nt c bit gi l nt gc. Cc nt cn li c chia thnh k tp ri nhau k hiu T1, T2, , Tk sao cho Ti(Tj l tp rng(vi i(j) v mi mt cy c mt nt gc l nt cha ca cc nt, l gc ca cc cy T1, T2, , Tk . Cc cy Ti gi l cc cy con.

Ta thy cy c tnh cht phn cp theo nh quan h gia tc quan trng, c nhiu ng dng trong thc t hng ngy nh: gia ph, mc lc ca 1 quyn sch, t in...

I Cc khi nim

- Cp(bc) ca 1 nt l s lng cy con ca nt .

- Nt kt thc(nt l): l cc nt c cp=0. (B, G, H, K, L)

- Nt nhnh: l cc nt khng phi nt l, gi l nt nhnh c cp ( 0.

- Nt c th xem nh mt phn t ca danh sch v c th c kiu bt k.

- Cp ca cy l cp cao nht ca tt c cc nt c trn cy.

- S mc ca nt: c nh ngha truy hi nh sau: s mc ca nt gc=1, nu s mc ca nt cha l i th s mc ca cc nt con ca n l i+1.

- Chiu cao ca cy l s mc cao nht ca tt c cc nt c trn cy(hay l mc ln nht ca cc nt l).

- ng i trn cy ging nh ng dn trn cy th mc: l tp hp tt c cc nt xut pht t gc n nt m ta mun n.

- di ca ng i = s nt-1 (hoc=s cung trn ng i ).

- Cy c th t nu ta coi trng th t cc cy con ca mi nt trn cy.

Cy con tri

Cy con phi

II Biu din cy

- biu din cy, ta c nhiu cch: biu din bng th, bng gin , bng cc du ngoc lng nhau, bng cc ch sa. Bng th: hnh trn

b. Bng gin

c. Bng cc du ngoc lng nhau: (A(B)(C(G))(D(E(H)(K)(L))(F)))d. Bng ch s:

1.A

1.1.B

1.2.C

1.2.1.G

1.3.D

1.3.1.E

1.3.1.1.H

1.3.1.2.K

1.3.1.3.L

1.3.2.F

III Cy nh phn

1. nh ngha v tnh cht

a. nh ngha: Cy nh phn l cy c th t cp 2 ( Mi nt c nhiu nht 2 cy con: 1 cy con tri, 1 cy con phi)b. Tnh cht: V l cy c th t nn phn bit cy con ca mi nt c trn cy; cy con tri v cy con phi.

Khc

Ch : khng v cy nh phn m khng phn bit cy con tri v cy con phi.* Cc dng c bit

- Cc cy ch c ton cy con tri, ton cy con phi hay ch c mt cy con(cy cp 1- cy nh phn suy bin).

+ Cc nt trn cy c ton cy con tri: gi l cy nh phn tri.

+ Cc nt trn cy c ton cy con phi: gi l cy nh phn phi.

+ C mt cy con tri, mt cy con phi v ngc li an xen nhau gi l cy nh phn rch rc - y l cy c chiu cao cao nht trong tt c cc cy nh phn c cng s nt.

+ Tt c cc nt trn cy u c ti a 2 cy con tr mc cui cng, cc nt c lp y theo th t t tri qua phi gi l cy nh phn hon chnh. C th c 2 dng:

Cy nh phn hon chnh l cy c chiu cao thp nht trong tt c cc cy nh phn c cng s nt v chiu cao c tnh bng: h=|log2n|

L cy cn bng tuyt i.

- Nu mt cy nh phn m mi nt c gn mt gi tr sao cho tt c cc nt ca cy con tri u c gi tr nh hn gi tr ca nt cha. Cn cc nt thuc cy con phi c gi tr ln hn gi tr ca nt cha v gi l cy nh phn tm kim.

V d:

2. Biu din cy nh phn

a. Lu tr k tip

Nu nh s th t cc nt bt u t gc, ti mi mc nh s t (cy con) tri sang (cy con) phi, t mc thp n mc cao. Ta c th dng 1 mng 1 chiu lu cc nt, vi ch s ca phn t tng ng vi s th t ca nt (vi cch xc nh trn)

b. Lu tr lin kt

- Cy nh phn l mt cu trc bao gm cc phn t (nt) c kt ni vi nhau theo quan h cha-con vi mi cha c ti a 2 con. biu din cy nh phn ta chn phng php cp pht lin kt. ng vi mt nt ta dng mt bin ng lu tr cc thng tin:

+ Thng tin lu tr ti nt.

+ a ch nt gc ca cy con tri trong b nh.

+ a ch nt gc ca cy con phi trong b nh.

3. Duyt cy nh phn

- Vi tt c cc cu trc d liu phi tuyn ta u phi dng nhng php duyt m cch lit k tt c cc phn t trong cu trc sao cho mi phn t c lit k mt ln. Cn c vo v tr tng i ca 3 thnh phn trn cy nh phn l cy con tri, gc v cy con phi.

Ta c cc cch duyt cy nh sau:+ Duyt cy theo th t u hay th t trc, nu cy khng rng th:

Thm gc

Duyt cy con tri theo th t u

Duyt cy con phi theo th t u

+ Duyt cy theo th t gia, nu cy khng rng th:

Duyt cy con tri theo th t gia

Thm gc

Duyt cy con phi theo th t gia

+ Duyt cy theo th t cui ( th t sau), nu cy khng rng th:

Duyt cy con tri theo th t sau

Duyt cy con phi theo th t sau

Thm gc

- y ta dng 2 thut ng: duyt, thm

+ Thm: khi cy c mt nt (gc)

+ Duyt: khi cy l tp hp

- Nu cy duyt theo phng php no th cc cy con cng c duyt theo phng php .

Duyt cy theo th t gia(LNR)

Duyt cy theo th t sau(LRN)

Duyt cy theo th t u(NLR)4. Cy nh phn ni vng

- Cu trc trn cy s thay i bng 2 nt nh du vi nhng trng ta bit, thm vo 2 bit nh du

- Gi s nt ang xt l P:

+ Trng hp nu P c cy con tri th nt nh du ca P c gi tr 0, mi ni tri ca P l mi ni thng ghi nhn a ch gc ca cy con tri.

+ Trng hp khng c cy con tri th bit nh du ca P nhn gi tr 1 v mi ni tri ca P l mi ni vng ghi nhn a ch ca nt ng trc P trong dy duyt cy nh phn theo th t gia k hiu l +P.

+ Trng hp P c cy con phi th bit nh du bn phi ca p nhn gi tr 0 v mi ni phi ca P l mi ni thng ghi nhn a ch gc ca cy con phi.

+ Trng hp P khng c cy con phi th bit nh du bn phi ca P nhn gi tr 1 v mi ni phi ca P l mi ni vng ghi nhn a ch ca nt ng sau nt P trong dy duyt cy nh phn theo th t gia k hiu P+IV Cy tng qut

1. Biu din cy tng qut

- Khi biu din cy tng qut s c rt nhiu nt rng (mi ni khng), v s lng cc cy con ca mi nt trn cy tng qut rt khc nhau nn s rt tn b nh. Cn trong trng hp biu din bng cy nh phn khng y th s mi ni rng cng nhiu.

-> Mun lu tr cy tng qut th:

+ Mi nt trn cy tng qut ch c duy nht mt cy con cc tri.

+ Ch c duy nht mt nt anh em cng mc k phi.

tit kim khng gian nh ngi ta tm cch biu din cy tng qut bng cy nh phn tng ng theo quy c sau:

+ Gc ca cy tng qut l gc ca cy nh phn tng ng

+ Gc cy con cc tri s l gc cy con tri trn cy nh phn tng ng.

+ Nt anh em cng mc k phi s l gc cy con phi trn cy nh phn tng ng.

I Cy tng qut

II Cy nh phn tng ng

2. Duyt cy tng qut

- Cy nh phn l trng hp c bit ca cy tng qut nn php duyt cy tng qut phi c nh ngha sao cho khi p dng trn cy nh phn th ta phi c kt qu trng vi php duyt cy nh phn nh ngha.

- Mi cy tng qut u c biu din bng mt cy nh phn tng ng, do yu cu xc nh mi quan h kt qu duyt cy tng qut vi kt qu duyt cy nh phn tng ng biu din n.

- duyt cy tng qut ta c 3 phng php sau:

+ Duyt cy tng qut theo th t u:

Thm gc

Duyt cy con cc tri theo th t u

Duyt ln lt t tri sang phi cc cy con cn li theo th t u.

+ Duyt cy tng qut theo th t gia:

Duyt cy con cc tri theo th t gia

Thm gc

Duyt ln lt t tri sang phi cc cy con cn li theo th t gia.

+ Duyt cy tng qut theo th t cui:

Duyt cy con cc tri theo th t cui

Duyt ln lt t tri sang phi cc cy con cn li theo th t cui.

Thm gc

=> C 3 php duyt trn u c nh ngha vi iu kin l cy khng rng.

V d 1: I: duyt cy theo th t u: ABFGCDHIJEK

II: duyt cy nh phn tng ng theo th t u: ABFGCDHIJEK

->Ta thy duyt cy tng qut theo th t u trng vi kt qu duyt cy nh phn tng ng biu din n theo th t u.

V d 2: I: duyt cy theo th t cui: FGBCHIJDKEA

V d 3: II: duyt cy theo th t gia: FGBCHIJDKEA

->Ta thy kt qu duyt cy tng qut theo th t cui trng vi kt qu duyt cy nh phn tng ng biu din n theo th t gia.

-> 2 cch duyt cn li trn cy tng qut v cy nh phn tng ng th khng trng vi bt k kt qu no.

Chng 5Cc gii thut sp xp v tm kim

I Sp xp

1. Khi nim

- Sp xp th t l php ton thng gp trong cc cng vic hng ngy nh trong cc bi ton qun l kinh t nhm tm kim d liu d dng v nhanh chng.

- Sp xp l qu trnh x l mt danh sch cc phn t t chng theo mt th t tho mn mt tiu chun no da trn ni dung thng tin lu gi ti mt phn t.

Cc gii thut sp xp c phn chia lm 2 nhm l:

+ Sp xp th t ni (hay sp xp th t trn mng): ton b d liu cn sp xp th t phi c a vo b nh chnh. Do d liu cn sp xp thng khng ln nn thi gain thc hin tng i nhanh.

+ Sp xp ngoi (hay sp xp th t tp tin): mt phn cc d liu cn sp xp c a vo trong b nh chnh, phn d liu cn li c lu tr trn b nh ngoi (bng t, a t). Do d liu cn sp xp tng i ln nn thi gian thc hin c th chm hn.

* tng: Ton b cc thut ton sp xp trong v ngoi theo tng chung sau y:

- Xt 2 tp ngun v tp ch

- Khi ng tp ngun v tp ch

- Lp li cho n khi ht cc phn t ca tp ngun bng cch:

+ Ly mt (hoc mt s) phn t c tnh cht P ca tp ngun

+ a cc phn t vo v tr thch hp cho tp ch theo tiu chun Q no .

- Thut ton s dng v:

+ S phn t ca tp ngun l hu hn.

+ Sau mi ln duyt s phn t ca tp ngun gim t nht l 1 phn t.

* Phn tch:

- Trong vng lp While:

+ Tt nht : 1 ln so snh, 0 ln hon v

+ Xu nht: (i-1) ln so snh, (i-1) ln hon v

+ Trung bnh : (i-1)/2 ln so snh, (n-1)/2 ln hon v.

- Trong vng lp For:

+ Tt nht : 1 ln so snh, 0 ln hon v

+ Xu nht : s ln so snh = hon v

2. Mt s phng php sp xp n gin

2.1. Sp xp kiu la chn (Selection sort)

Chn phn t nh nht trong n phn t ban u, a phn t ny v v tr ng l u tin ca dy hin hnh. Sau khng quan tm n n na, xem dy hin hnh ch cn n-1 phn t ca dy ban u, bt u t v tr th 2. Lp li qu trnh trn cho dy hin hnh n khi dy hin hnh ch cn 1 phn t. Dy ban u c n phn t, vy tm tt tng thut ton l thc hin n-1 lt vic a phn t nh nht trong dy hin hnh v v tr ng u dy.Cc bc tin hnh nh sau:

Bc 1: i=1

Bc 2: Tm phn t a[min] nh nht trong dy hin hnh t a[i] n a[n]

Bc 3: Hon v a[min] v a[i]

Bc 4: Nu i nt i+1 th i ch 2 nt vi nhau. Nu khng tip tc so snh tip.

1. So snh 25 vi 55:kim tra 25 < 55 -> Sai khng i ch.

2. So snh tip 55 vi phn t tip theo l 45: 55 > 45 -> ng i ch 45 vi 55

3. So snh tip 55 vi 90: 55 < 90 -> sau khng i ch.

4. So snh tip 90 vi 10: 90 > 10 -> ng i ch 90 cho 10.

Danh sch sau khi bin i ln th nht.

25 45 55 10 90.

Ta nhn thy phn t 90 ln nht c a v cui danh sch, c tun t kim tra n ln nh vy ta s c mt danh sch tng dn.

- Gii thut c thc hin nh sau:void BubbleSort( int a[], int n){printf ("BubbleSort: \n");for(int i=0;ii;j--)if(a[j]