Là các thao tác được Cómột 2 dãy hữu hạn Nhập/xuấ Sơ đồ Liệt kê sắp xếp định sao cách : theo mộtt trình tự xác khối B1… cho sau khi thực hiện dãy thao tác ấy, B2… từ Input của bài toán, [r]
Trang 1TRƯỜ NG THPT PHÚ MỸ
B µ i g i ¶ n g
BÀI TOÁN VÀ THUẬT
TOÁN (TT)
Giáo viên: Phan Thanh Hưởng
BÀI 4
Trang 2 CÂU HỎI ÔN TẬP
Em hãy nêu khái niệm thuật
toán?
Là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác ấy,
từ Input của bài toán, ta nhận được
Output cần tìm.
Có máy cách biểu diễn thuật
toán? Có 2
cách :
Các hình sau đây thể hiện thao tác
gì?
Nhập/xuấ t
So sánh Tính toán Trình tự thực hiện
Liệt kê B1…
B2…
B3…
.
Bn .
Sơ đồ khối
Trang 3VÍ DỤ 2 BÀI TOÁN SẮP XẾP
trở thành dãy không giảm.
Ví dụ: dãy A gồm các số nguyên : 6, 1,
3, 5, 3, 10, 7 sau khi sắp xếp ta có
dãy : 1, 3, 3, 5, 6, 7, 10
1) Xác định bài
toán-
Input:
- Output:
Dãy A gồm N số nguyên
aDãy A được sắp xếp thành dãy 1,a2 , ,aN không giảm
2) Ý tưởng: Với mỗi cặp số hạng đứng kề
nhau, nếu số đứng trước lớn hơn số đứng
sau ta đổi chổ chúng cho nhau Lặp lại cho
đến khi không còn đổi chổ nào xảy ra nữa
Thuật toán sắp xếp bằng tráo đổi (Exchange Sort)
Ý tưởng?
Trang 46 1 3 5 3 10
7
1 6 3 5 3 10
7
1 3 6 5 3 10 7
1 3 5 6 3 10
7
1 3 5 3 6 10 7
1 3 5 3 6 7
10
Trang 5Mô phỏng thực tế
3) Thuật toán
a) Cách liệt
kêBước 1 Nhập N, các số hạng a1,a2, ,aN
Bước 2 M N ;
Bước 3 Nếu M<2 ,dãy A đã được sắp xếp, kết thúc;
Bước 4 MM-1, i0;
Bước 5 ii+1;
Bước 6 Nếu i>M thì quay lại bước 3;
Bước 7 Nếu ai > ai+1 thì hoán đổi ai và ai+1;
Bước 8 Quay lại bước 5
Trang 6a) Sơ đồ khối Nhập N và
a1,a2, ,aN MN
ai>ai+
1 ?
MM-1; i0 ii+1 M<2?
i>M?
Tráo đổi ai và
ai+1
Đưa ra dãy A rồi kết thúc
Đúng
Sai Sai
Sai
Đúng
Đúng
Trang 7a) Cách liệt kê
B1 Nhập N, các số
a 1 ,a 2 , ,a N
B2 M N ;
B3 Nếu M<2 , dãy A
’ được sx ,
kết thúc ;
B4 MM-1, i0;
B5 ii+1;
B6 Nếu i>M, quay lại b3 ;
B7 Nếu a i > a i+1 hoán
đổi a i và a i+1 ;
B8 Quay lại b5
Nhập N và
a1,a2, ,aN
MN
ai>ai+
1 ?
MM-1; i0 ii+1
M<2
?
i>M
?
Tráo đổi ai và
ai+1
Đưa ra dãy A được sx, kết thúc
Đúng
Sa i Sai
Sai
Đúng
Đúng
b)Sơ đồ khối
Trang 85 4
3 2
B1 Nhập N,
a 1 ,a 2 , ,a N B2 M N ; B3 Nếu M<2, dãy A được
sx, kt;
B4 MM-1, i0; B5 ii+1;
B6 Nếu i>M, quay lại b3;
B7 Nếu a i > a i+1 , hoán đổi a i và
a i+1 ; B8 Quay lại b5.
MÔ TẢ THUẬT TOÁN
6 3
2
1 2 3 4 5
1
Trang 9
6 5
4 3
2 1
Lần duyệt thứ nhất
6
B1 Nhập N,
a 1 ,a 2 , ,a N
B2 M N ;
B3 Nếu M<2, dãy A được sx, kt;
B4 MM-1, i0;
B5 ii+1;
B6 Nếu i>M, quay lại b3;
B7 Nếu a i >
a i+1 , hoán đổi
a i và a i+1 ;
B8 Quay lại b5.
N=6
Trang 10Lần duyệt thứ hai
6 5
4 3
2
B1 Nhập N,
a 1 ,a 2 , ,a N
B2 M N ;
B3 Nếu M<2, dãy A được sx, kt;
B4 MM-1, i0;
B5 ii+1;
B6 Nếu i>M, quay lại b3;
B7 Nếu a i >
a i+1 , hoán đổi
a i và a i+1 ;
B8 Quay lại b5.
N=6
Trang 116 4
3 2
Lần duyệt thứ ba
4
i
B1 Nhập N,
a 1 ,a 2 , ,a N
B2 M N ;
B3 Nếu M<2, dãy A được sx, kt;
B4 MM-1, i0;
B5 ii+1;
B6 Nếu i>M, quay lại b3;
B7 Nếu a i >
a i+1 , hoán đổi
a i và a i+1 ;
B8 Quay lại b5.
N=6
Trang 12Lần duyệt thứ tư
6 3
2
4
i
3 2
1
i
Lần duyệt thứ năm
B1 Nhập N,
a 1 ,a 2 , ,a N
B2 M N ;
B3 Nếu M<2, dãy A được sx, kt;
B4 MM-1, i0;
B5 ii+1;
B6 Nếu i>M, quay lại b3;
B7 Nếu a i >
a i+1 , hoán đổi
a i và a i+1 ;
B8 Quay lại b5.
N=6
Trang 13Nhận xét thuật toán
- Ta thấy quá trình so
sánh và đổi chỗ sau
mỗi lần duyệt chỉ thực
hiện với dãy đã bỏ bớt
số hạng cuối dãy Biến
M làm điều này, M có
giá trị khởi tạo là N,
sau mỗi lần duyệt M
giảm một đơn vị cho
đến khi M<2
- i là biến chỉ số thay
đổi lần lượt từ 0 đến
M+1
B1 Nhập N,
a 1 ,a 2 , ,a N
B2 M N ;
B3 Nếu M<2, dãy A được sx, kt;
B4 MM-1, i0;
B5 ii+1;
B6 Nếu i>M, quay lại b3;
B7 Nếu a i >
a i+1 , hoán đổi
a i và a i+1 ;
B8 Quay lại b5.
Trang 14* Câu hỏi cũng cố kiến thức
Từ thuật toán sắp xếp
dãy không giảm bên
theo em cần sửa đổi
bước nào để trở thành
thuật toán sắp xếp
dãy không tăng?
a) Cách liệt kê
B1 Nhập N, các số
a 1 ,a 2 , ,a N B2 M N ; B3 Nếu M<2 , dãy A ’ được sx , kết
thúc ;
B4 MM-1, i0;
B5 ii+1;
B6 Nếu i>M, quay lại b3 ; B7 Nếu a i > a i+1 hoán đổi a i và a i+1 ;
B8 Quay lại b5
a i < a i+1
Trang 15Bài tập ứng dụng
sao cho số chẵn đứng trước số lẻ
đứng sau.