Nội dung:1.Khái niệm bài toán 2.Khái niệm thuật toán 3.Một số ví dụ về thuật toán Ví dụ 1: Kiểm tra số nguyên tố Ví dụ 2: Thuật toán sắp xếp Interchange Sort BÀI TOÁN VÀ THUẬT TOÁN... Ví
Trang 1MÔN TIN HỌC LỚP 10
Trang 2Nội dung:
1.Khái niệm bài toán
2.Khái niệm thuật toán
3.Một số ví dụ về thuật toán
Ví dụ 1: Kiểm tra số nguyên tố
Ví dụ 2: Thuật toán sắp xếp (Interchange Sort)
BÀI TOÁN VÀ THUẬT TOÁN
Trang 3-Trong cuộc sống, ta thường gặp những việc liên quan đến sắp xếp như học sinh xếp hàng theo thứ tự từ thấp đến cao, giáo viên xếp loại học lực học sinh trong lớp
- Chẳng hạn, cho 10 chiếc cọc có chiều cao
khác nhau, cần sắp xếp lại sao cho cọc thấp ở trước,cọc cao ở sau
Ví dụ 2: Bài toán sắp xếp (Interchange sort)
BÀI TOÁN VÀ THUẬT TOÁN
Trang 4Ta chỉ xét bài toán sắp xếp dạng đơn giản sau: Cho dãy A gồm N số nguyên a1,a2, , aN
cần sắp xếp các số hạng để dãy A trở thành
dãy không giảm (tức là số hạng trước không lớn hơn số hạng sau)
BÀI TOÁN VÀ THUẬT TOÁN
Trang 5a) Dữ liệu gốc b) Dữ liệu đã sắp xếp
BÀI TOÁN VÀ THUẬT TOÁN
Trang 6Xác định bài toán:
+Input:
+Output:
BÀI TOÁN VÀ THUẬT TOÁN
?
Dãy A gồm N số nguyên a1, a2,…,aN
Dãy A được sắp xếp lại thành dãy không giảm.?
Trang 7Ý 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 VÀ THUẬT TOÁN
Trang 825 7
Trường hợp dãy A có 2 phần tử
BÀI TOÁN VÀ THUẬT TOÁN
Trang 915 3 10
>
Trường hợp dãy A có 3 phần tử
BÀI TOÁN VÀ THUẬT TOÁN
Trang 1020 > 15 > 10 9 2
BÀI TOÁN VÀ THUẬT TOÁN
Dãy A ban đầu:
Dãy A sau khi sắp xếp:
Trang 11Có 1 phần tử Dừng
Có nhiều hơn 1 phần tử
-So sánh giá trị 2 phần tử liền kề, -Nếu phần tử đứng trước > phần tử đứng sau
Dãy A
Lặp lại việc tráo đổi
cho đến khi dãy A
đuợc sắp không giảm
dần
Gọi M là số phần tử
trong dãy
Gọi i là số thứ
tự của phần tử
Trang 12a) 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 thì đưa ra dãy A đã được
sắp xếp rồi kết thúc;
Bước 4: M ← M-1; i ← 0
Bước 5: i ← i+1
Bước 6: Nếu i>M thì quay lại bước 3
BÀI TOÁN VÀ THUẬT TOÁN
Trang 13B1: 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 đã được 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
bước 3
B7: Nếu ai>ai+1 thì tráo đổi
ai và ai+1cho nhau
B8: Quay lại bước 5
SƠ ĐỒ KHỐI LIỆT KÊ
Nhập N và a1,a2, ,an
M←N
i ← i +1
i > M ? Đ
M<2 ? Đ rồi kết thúc Đưa ra A
M ← M-1; i←0
S
a >a ?
S Tráo đổi
a i và a i+1 Đ
Trang 14- Sau mỗi lần đổi chỗ, giá trị lớn nhất của dãy A sẽ được chuyển dần về cuối dãy và sau lượt thứ nhất thì giá trị lớn nhất xếp đúng vị trí là ở cuối dãy Tương tự, sau lượt thứ hai, giá trị lớn thứ hai được xếp đúng ở
vị trí sát cuối…
- Sắp xếp bằng tráo đổi còn có tên gọi là
BÀI TOÁN VÀ THUẬT TOÁN
Trang 15• Ta thấy quá trình so sánh và đổi chỗ sau mỗi
lượt chỉ thực hiện với dãy đã bỏ bớt số hạng
cuối dãy Để thực hiện điều đó trong thuật toán
sử dụng biến nguyên M có giá trị khởi tạo là N, sau mỗi lượt M giảm một đơn vị cho đến khi
M<2
• Trong thuật toán trên, i là biến chỉ số các số
hạng của dãy có giá trị nguyên thay đổi lần lượt
từ 0 đến M+1
BÀI TOÁN VÀ THUẬT TOÁN
Trang 168 10 7 9 15
-Duyệt từ cuối dãy số ngược trở về vị trí ban đầu:
i=0
+ Giảm biến M một đơn vị (M= M-1)
+ Khởi tạo vị trí bắt đầu của biến i = 0.
M=
i=1
>
i=2 i
>
i=3
>
i=4
BÀI TOÁN VÀ THUẬT TOÁN
Trang 178 7 9 10 15
+ Khi i < M : so sánh giá trị a i và a i + 1
-Duyệt từ cuối dãy số ngược trở về vị trí ban đầu:
i=0
+ Giảm biến M một đơn vị (M= M-1)
+ Khởi tạo vị trí bắt đầu của biến i = 0.
+ Tăng i lên 1 đơn vị (i=i+1)
M=
i=1
>
i=2 i
>
i=3
+ Khi i > M : không thỏa điều kiện
BÀI TOÁN VÀ THUẬT TOÁN
Trang 187 8 9 10 15
-Duyệt từ cuối dãy số ngược trở về vị trí ban đầu:
i=0
+ Giảm biến M một đơn vị (M= M-1)
+ Khởi tạo vị trí bắt đầu của biến i = 0.
M=
i=1
>
i=2 i
BÀI TOÁN VÀ THUẬT TOÁN
Trang 197 8 9 10 15
Dãy A ban đầu:
Dãy A sau khi sắp xếp:
BÀI TOÁN VÀ THUẬT TOÁN
Trang 20BÀI TOÁN VÀ THUẬT TOÁN
Củng cố bài :
Câu 1: Vì sao biến i được khởi tạo giá trị là 0 trong khi chỉ số của số hạng được bắt đầu bằng 1?
Vì ở bước 5, giá trị i tăng lên 1 nên khi so sánh giá trị ai và ai+1 lúc này là a1 và a2.
Câu 2: Có thể không dùng biến M trong thuật toán được không?
Có thể nhưng không tối ưu.
Sử dụng biến M để giảm được số lần so sánh và loại được các phần tử có giá trị lớn hơn các phần tử còn lại trong dãy