sap xep mang bang thuat toan trao doi va noi bot by girlbanks

VIEWS: 295 PAGES: 11

									{thuû tuïc saép xeáp baèng trao ñoåi}

1. Saép xeáp (sorting) Saép xeáp laø boá trí laïi thöù töï caùc Procudure saép xeáp baèng löïa choïn} {thuû tuïc sxep2; ñoái töôïng nhaèm OK: Boolean; Var i, M, tg: integer; thoaû maõn moät Baøi toaùn: Procedure sxep1;

yeâu caàu naøo ñoù. Yeâu caàu ñeå Begin Cho daõy min,tg: integer; K = {k1, k2, …, i, soá nguyeân 2. Saép xeáp baèng löïa Var ñoùj, maø tieán haønh saép xeáp theo M:=N; Caàn saép xeáp laïi Begin choïn (selection sort) kn}. laø khoaù saép xeáp. caùc phaàn töû goïi Repeat cuûa K For i:= 1 to saudo saép xeáp xong sao cho N-1 khi Thuû tuïc löïa choïn: OK:= True; daõy taêng daàn. thì K trôû thaønhM:= M-1; Begin For i:= 1 to M do 3. Saép xeáp baèng traoVí duï: Min:= i;13 24 65 8 19 27 30 IF K[i] > K[i+1] Then ñoåi ( exchange sort) K= Sau khiFor j:= i+1 to N do saép Begin xeáp ta ñöôïc daõy taêng
Thuû tuïc trao ñoåi: If K[min] > K[j] then min:=j; tg:= K[i]; K[i]:= K[i+1]; K[i+1]:= tg; End; End; End;
End; Until OK;

td
Ct.1

lc
Ct.2

8 13 19 24 27 30 K= K[i]; K[i]:= K[min]; K[min]:= tg;65 tg:= OK:= False;

K= 12
min=1

i=1

8

25

16

4

6

31

22
N Baét ñaàu

Saép xeáp baèng löïa choïn

i:=1, min:=i j:=i+1 K[min]>K[j]
S S Ñ

Min:=j

j:=j+1
j>N
Ñ S

Keát thuùc

Ñ

i >= N

i:=i+1

Ñoåi choã k[min] vôùi K[i]

►

j=2

K=

min=1

i=1

12

8

25

16
K[min]>K[ j ]?

4

6

31

22
N

Procedure sxep1; Var Begin For i:= 1 to N-1 do Begin Min:= i; i, j, min,tg: integer;

For j:= i+1 to N do
If K[min] > K[j] then min:=j; tg:= K[i]; K[i]:= K[min]; K[min]:= tg; End; End;

►

j=2

K= 12
min=1

8

25

16

4

6

31

22

i=1

Procudure sxep; Var Begin For i:= 1 to N-1 do Begin i, j, k,tg: integer;

Min:= i;
For j:= i+1 to N do If tg; End; End; K[min] > K[j] then min:=j; tg:= K[i]; K[i]:= K[min]; K[min]:=

►

i=1

K=

12

8

25

16

4

6

31
M

22
M=N

Baét ñaàu

M

N Đúng

Saép xeáp baèng trao ñoåi

M<2 Sai M i Đúng M-1; i i+1 i>M 0

Đưa ra K rồi kết thúc

Đổi ki và ki+1

Đúng

Sai
ki> k i+1 Sai

►

i=1

K=

12

8

25

16

4

6

31
M

22
M=N

Procudure sxep2; Var Begin M:=N; Repeat OK:= True; M:= M-1; For i:= 1 to M do IF K[i] > K[i+1] Then Begin tg:= K[i]; End; Until OK; End; K[i]:= K[i+1]; K[i+1]:= tg; OK:= False; i, M, tg: integer; OK: Boolean;

►

j=2

j=3

j=4

j=5

j=6

j=7

j=8

K= 12 T
min=1

8
min=2

i=1

F 25 F 16 T 4
K[min]>K[ j ]? j=3 j=4
min=5

F 6 F 31 F 22
j=6
min=6

j=5

j=7

j=8

K=

4

8
min=2

i=2

F 25 F 16 F 12 T 6
j=4 j=5

F 31 F 22
j=7 j=8

j=6

K=
• • •

4

6

25 8
min=3

i=3

T

16
min=4

T

12
min=5

T

8
min=6

F 31 F 22

K= 4

•

6

8

12

16

22

25

31
►

G B E K F • Sắp xếp ñeå laøm gì? I J A D C H ñeå • Laøm theá naøo

saép xeáp?

L

►

i=

i=1

1

i=2

2

i=3

3

i=4

4

i=5

5

i=6

6

i=7

7

8

K=

12 T

8

F 25

T

16 T 4 T
+ 1

6

F 31
M

T 22 31
M=N

So saùnh Ki > Ki i=1 i=2 i=3 i=4 i=5

i=6

K=

8
i=1

F

12 F 16 T
i=2 i=3

4
i=4

T

6
i=5

25 F 25 T 22
M

31

K=
• • • •

8

F

12 T 4

T

6

F

16 F 22
M

25

31

K=

4

6

8

12

31

22

25

31 ►

Hình ảnh nổi bọt khí trong nước, bọt có thể tích lớn nổi lên trước

5
3

4

2

7
1

6

►


								
To top