Cần sắp xếp các số hạng để dãy A trở thành.. Cần sắp xếp các số hạng để dãy A trở thành.[r]
Trang 1§4 BÀI TOÁN VÀ THUẬT TOÁN
§4 BÀI TOÁN VÀ THUẬT TOÁN
Trang 2Ví dụ 1 Kiểm tra tính nguyên tố của một số
nguyên dương
Input: N là một số nguyên dương;
Output: "N là số nguyên tố" hoặc "N
không là số nguyên tố"
3 Một số ví dụ về thuật toán
Trang 3 Ý tưởng:
Nếu N = 1 thì N không là số nguyên tố;
Nếu 1 < N < 4 thì N là số nguyên tố;
Nếu N 4 và không có ước số trong
phạm vi từ 2 đến phần nguyên căn bậc hai của N thì N là số nguyên tố
3 Một số ví dụ về thuật toán
Trang 4 Thuật toán
a) Thuật toán diễn tả bằng cách liệt kê
Bước 1: Nhập số nguyên dương N;
Bước 2: Nếu N = 1 thì thông báo N không
Trang 5 Thuật toán
a) Thuật toán diễn tả bằng cách liệt kê
Bước 5: Nếu i > thì thông báo N là
nguyên tố rồi kết thúc;
Bước 6: Nếu N chia hết cho i thì thông
báo N không nguyên tố rồi kết thúc;
Bước 7: i i + 1 rồi quay lại bước 5
3 Một số ví dụ về thuật toán
N
Trang 6 Thuật toán
b) Thuật toán diễn tả bằng sơ đồ khối
3 Một số ví dụ về thuật toán
Trang 7Nhập N N=1 ? N<4 ?
i 2
i i + 1
i > ?
N chia hết cho i ?
Trang 9
45
45 không là số nguyên tố
Trang 10Ví dụ 2 Bài toán sắp xếp:
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)
3 Một số ví dụ về thuật toán
Trang 11 Xác định bài toán
Input: Dãy A gồm N số nguyên a1, a2, , aN.
Output: Dãy A được sắp xếp lại 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 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.
3 Một số ví dụ về thuật toán
Trang 12 Thuật toán: Cách liệt kê
Bước 6: Nếu i > M thì quay lại bước 3;
Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 ;
Bước 8: Quay lại bước 5.
3 Một số ví dụ về thuật toán
Trang 13Nhập N ; a1,a2, aN
M N M<2 ?
Trang 1401/25/24 § 4 BÀI TOÁN VÀ THUẬT TOÁN 14
§4 BÀI TOÁN VÀ THUẬT TOÁN
§4 BÀI TOÁN VÀ THUẬT TOÁN
Trang 15 Ví dụ 3 Bài toán tìm kiếm
Cho dãy A gồm N số nguyên, đôi một khác nhau: a1, a2, , aN và một số nguyên k Cần biết có hay không chỉ số i (1 i N)
mà ai = k Nếu có hãy cho biết chỉ số đó
Số nguyên k được gọi là khóa tìm kiếm (gọi tắt là khóa)
3 Một số ví dụ về thuật toán
Trang 16 Thuật toán Tìm kiếm tuần tự (Sequential Search)
3 Một số ví dụ về thuật toán
Trang 17 Ý tưởng : thực hiện một cách tự nhiên Lần lượt từ số hạng thứ nhất,so sánh giá trị số hạng đang xét với khóa cho đến khi hoặc gặp một số hạng bằng khóa hoặc dãy đã được xét hết và không có giá trị nào bằng khoá Trong trường hợp thứ hai dãy A không có số hạng nào bằng khoá.
3 Một số ví dụ về thuật toán
Trang 183 Một số ví dụ về thuật toán
Trang 20Thuật toán Tìm kiếm nhị phân (Binary Search):
Input : Dãy tăng a1, a2, , aN và số nguyên k;
Output : Chỉ số i mà ai = k hoặc thông báo không
có số hạng nào của dãy có giá trị bằng k.
3 Một số ví dụ về thuật toán
Trang 22 Nếu aGiua = k thì Giua là chỉ số cần tìm Việc tìm kiếm kết thúc.
Nếu aGiua > k thì tìm tiếp trên dãy adau, adau+1, , aGiua–
Trang 23Thuật toán
a) Cách liệt kê
Bước 1: Nhập N, dãy a1, a2, , aN và số k ;
Bước 2: Dau 1, Cuoi N ;
Bước 3: Giua (dau + cuoi)/2 ;
Bước 4: Nếu aGiua = k thì thông báo chỉ số Giua, rồi kết thúc ;
3 Một số ví dụ về thuật toán
Trang 24Thuật toán
a) Cách liệt kê
Bước 5: Nếu aGiua > k thì đặt Cuoi Giua–1 rồi chuyển đến bước 7;
Bước 6: Dau Giua + 1;
Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trị bằng k, rồi kết thúc;
Bước 8: Quay lại bước 3.
3 Một số ví dụ về thuật toán