BÀI 4: BÀI TOÁN VÀ THUẬT TOÁN (Tiết 4)
3. Một số ví dụ về thuật toán
a. Bài toán sắp xếp
BÀI TOÁN SẮP XẾP
Hãy tìm cách sắp xếp các học sinh đang chào cờ (hình a) theo thứ tự thấp trước đến cao sau (hình b)
Hình a
Hình b
Thuật toán sắp xếp bằng tráo đổi
Xác định bài toán:�Input: Dãy A gồm N số nguyên a1, a2,…, aN.�Output: Dãy A sắp xếp thành dãy không giảm.
Ý tưởng: �
Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước lớn hơn số sau ta đổi vị trí chúng cho nhau. Việc đó được lặp lại cho đến khi không còn có sự đổi chỗ nào xảy ra nữa.
☞ Với N = 6 và dãy A gồm 6 số hạng như sau:
3 | 5 | 9 | 8 | 1 | 7 |
☞ Lượt thứ nhất:
3 | 5 | 9 | 8 | 1 | 7 |
3 | 5 | 8 | 9 | 1 | 7 |
3 | 5 | 8 | 1 | 9 | 7 |
3 | 5 | 8 | 1 | 7 | 9 |
☞ Lượt thứ hai :
3 | 5 | 8 | 1 | 7 | 9 |
3 | 5 | 1 | 8 | 7 | 9 |
3 | 5 | 1 | 7 | 8 | 9 |
☞ Lượt thứ ba :
3 | 5 | 1 | 7 | 8 | 9 |
3 | 1 | 5 | 7 | 8 | 9 |
3 | 1 | 5 | 7 | 8 | 9 |
1 | 3 | 5 | 7 | 8 | 9 |
☞ Lượt thứ tư:
Mô phỏng thuật toán sắp xếp bằng tráo đổi
Cách 1: Liệt kê các bước
B1: Nhập N, các số hạng a1, a2,…, aN;
B2: M ← N;
B3: Nếu M < 2 thì đưa ra dãy A đã sắp xếp rồi kết thúc;
B4: M ← M – 1; i ← 0;
B5: i ← i +1;
B6: Nếu i > M thì quay lại B3;
B7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;
B8: Quay lại B5.
a/ N=10;
Thuật toán sắp xếp bằng tráo đổi
Bài tập áp dụng: Mô phỏng việc thực hiện thuật toán sắp xếp với các dãy số sau?�
3 | 10 | 10 | 43 | 12 | 19 | 18 | 41 | 5 | 81 |
b/ N=10;
c/ N=10;
d/ N=10;
85 | 17 | 21 | 41 | 22 | 29 | 8 | 51 | 25 | 21 |
9 | 8 | 1 | 4 | 7 | 5 | 2 | 10 | 3 | 6 |
9 | 12 | 6 | 98 | 100 | 32 | 625 | 301 | 98 | 70 |
Nhập N và dãy
a1, a2,..., aN
M ← N
M < 2 ?
M ← M - 1; i ←0
i ← i + 1
i > M ?
ai > ai+1 ?
Tráo đổi
ai và ai+1
Đưa ra dãy A đã sắp xếp rồi kết thúc
Đ
Đ
Đ
S
S
S
Cách 2
Vẽ sơ đồ khối
Câu 1. Trong thuật toán sắp xếp :
a. Có khi nào M = 1 không?
b. Có thể không dùng biến M được không? Nếu được hãy mô tả thuật toán bằng một trong hai cách: liệt kê hoặc sơ đồ khối?
Câu 2. Trình bày thuật toán giải các bài toán sau: Hoán đổi giá trị của hai biến thực A và C.
BÀI TẬP VỀ NHÀ