Sắp xếp bằng trao đổi exchange sort 2.. Sắp xếp bằng lựa chọn selection sort Bài toán: Sắp xếp là bố trí lại thứ tự các đối tượng nhằm thoả mãn một yêu cầu nào đó.. Yêu cầu để theo đ
Trang 13 Sắp xếp bằng trao
đổi ( exchange sort)
2 Sắp xếp bằng lựa
chọn (selection sort)
Bài toán:
Sắp xếp là bố trí lại thứ tự các đối tượng nhằm thoả mãn một yêu cầu nào đó Yêu cầu để theo đó mà tiến hành sắp xếp gọi là khoá sắp xếp.
1 Sắp xếp (sorting)
Thủ tục lựa chọn:
Thủ tục trao đổi:
{thủ tục sắp xếp bằng lựa chọn}
Procedure sxep1;
Var i, j, min,tg: integer;
Begin
For i:= 1 to N-1 do Begin
Min:= i;
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;
Cho dãy số nguyên K = {k1, k2, …, kn} Cần sắp xếp lại các phần tử của K sao cho sau khi sắp xếp xong thì K trở thành dãy tăng dần.
8 13 19 24 27 30 65
13 24 65 8 19 27 30
Ví dụ: K=
Sau khi sắp xếp ta được dãy tăng
K=
{thủ tục sắp xếp bằng trao đổi}
Procudure sxep2;
Var i, M, tg: integer; OK: Boolean;
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]; K[i]:= K[i+1]; K[i+1]:= tg;
OK:= False;
End;
Until OK;
End;
Trang 2Bắt đầu
i:=1, min:=i j:=i+1 K[min]>K[j] Min:=j
j:=j+1
j > N
Đổi chỗ k[min] với K[i]
i:=i+1
i >= N
S
Đ
S
Đ
S
Sắp xếp bằng lựa chọn
i=1
K=
min=1
N
Trang 3Procedure sxep1;
Var i, j, min,tg: integer;
Begin
For i:= 1 to N-1 do Begin
Min:= i;
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;
i=1
j=2
K=
min=1
N
K[min]>K[ j ]?
Trang 4j=2
min=1
K= 12 8 25 16 4 6 31 22
Procudure sxep;
Var i, j, k,tg: integer;
Begin
For i:= 1 to N-1 do Begin
Min:= i;
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;
Trang 5Bắt đầu
M N
M M-1; i 0
ki> k i+1
M < 2
i i+1
i > M
Đ i k ổ i và ki+1
Sai
Sai
Đúng Sai
Đúng
Đúng
Sắp xếp bằng trao đổi
i=1
K=
Trang 6Procudure sxep2;
Var i, M, tg: integer; OK: Boolean;
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]; K[i]:= K[i+1]; K[i+1]:= tg;
OK:= False;
End;
Until OK;
End;
i=1
K=
Trang 7j=2
min=1
K= T
K[min]>K[ j ]?
j=3 j=4 j=5 j=6 j=7 j=8
12
4
i=2 min=2
j=3
F
j=4
F
j=5
F
j=6
T
min=6
j=7
F
j=8
F
K=
K=
i=3 min=3
j=4
T
min=4
j=5
T
min=5
j=6
T
min=6
j=7
F
j=8
F 8
K=
•
•
•
•
Trang 9B
C D
H
K
L
Trang 1012 8 25 16 4 6 31 22
i = 1 2 3 4 5 6 7 8
i=7
K=
12
K=
M
i=1
F
i=2
F
i=3
T
i=4
T
i=5
F
i=6
12
K=
M
i=1
F
i=2
T
i=3
T
i=4
F
i=5
F 22
31 25
22 31
12 8
6 4
•
•
•
•
K=
Trang 114
2 3
5
6
7
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