Tên đơn vị: Trường THPT Mường Luân
Tác giả: Lê Ngọc Đạt
Tên môn, khối: Tin học khối 10
Tên bài giảng: Bài 4 Bài toán và thuật toán
Tiết: 13
Tiết 13. Bài 4: Bài toán và thuật toán
Ví dụ 2. Bài toán sắp xếp
Cho dãy A gồm N số nguyên a
1
,
a
2
,…, a
N
. Cần sắp xếp các số
hạng để dãy A trở thành dãy
không giảm
Ví dụ: dãy A: 6, 1, 5, 3, 7, 8, 10,
7, 12, 4
Sau khi sắp xếp ta thu được dãy A’:
1, 3, 4, 5, 6, 7, 7, 8, 10, 12
Quay lại với bài toán: Cho dãy A gồm N số
nguyên a
1
, a
2
,…, a
N
. Cần sắp xếp các số
hạng để dãy A trở thành dãy không giảm
Xác định bài toán
- input: Dãy A gồm N số nguyên a
1
, a
2
,…, a
N.
- out put: Dãy A’ là một 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
chỗ chúng cho nhau. Việc đó được lặp lại cho
đến khi không có sự đổi chỗ nào xảy ra nữa.
Bài toán: Sắp xếp dãy A gồm N số nguyên a1,a2, , aN thành
dãy không giảm
Bước 1: nhập N và a
1
, a
2
,…,
a
N
Bước 2: M N←
Bước 3: Nếu M < 2 thì đưa
ra dãy A đã được sắp xếp
rồi kết thúc
Bước 4: gán M= M – 1; i= 0
Bước 5: gán i:= i + 1
Bước 6: nếu i > M thì quay
lại bước 3
Bước 7: nếu a
i
> a
i+1
thì tráo
đổi a
i
và a
i+1
cho nhau
Bước 8: quay lại bước 5
i > M ?
đúng
sai
đúng
sai
sai
Nhập N và a1, a2, …, aN
M ← N
M < 2 ?
M ← M - 1; i ← 0
i ← i + 1
a
i
> a
i +1
?
Tráo đổi a
i
và a
i + 1
Đưa ra A rồi
kết thúc
đúng
Liệt kê
Sơ đồ khối