Tổng quát : Cho một dãy đối tượng hãy tìm ra đối tượng thỏa mãn một yêu cầu nào đó (khóa của tìm kiếm)... Thuật toán tìm kiếm tuần tự.[r]
Trang 1Tiết 12
Bài 4 BÀI TOÁN VÀ THUẬT TOÁN
(TÌM KIẾM TUẦN TỰ)
Trang 23 Các ví dụ về thuật toán
b)Ví dụ 2 : Bài toán tìm kiếm
Trong cuộc sống, ta thường gặp những yêu cầu liên quan đến tìm kiếm:
- Tìm học sinh có điểm tổng kết cao nhất
- Tìm người trẻ tuổi nhất trong một hội thi
…
Tổng quát : Cho một dãy đối tượng hãy tìm ra đối tượng thỏa mãn một yêu cầu nào đó (khóa của tìm kiếm)
Trang 3XÁC ĐỊNH BÀI TOÁN
OUPUT
I NPUT Dãy A gồm N số nguyên khác
nhau a 1 ,a 2 ,…,a N và số nguyên k
Chỉ số i mà a i =k hoặc thông báo không có số hạng nào của dãy A có giá trị bằng k
BÀI TOÁN:
Cho dãy A gồm N số nguyên khác nhau a 1 ,a 2 ,
…,a N và số nguyên k Đưa ra: chỉ số i mà a i =k hoặc thông báo không có số hạng nào của dãy A có giá trị bằng k.
Trang 4TÌM KIẾM TUẦN TỰ
Ví dụ:
Dãy A gồm các số
8 10
a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8
N=8
K=2
2
||
k
Tìm thấy
, có a 6 =k, vậy chỉ số cần tìm là i=6
K=3 , không có giá trị nào
3
||
k
Không tìm
thấy
Trang 5TÌM KIẾM TUẦN TỰ (Sequential Search)
Lần lượt từ số hạng thứ nhất (i chạy từ
1, 2,3,…), ta so sánh giá trị số hạng ai với khóa (K) đến khi:
- Gặp một số hạng ai bằng khóa k thì đưa ra chỉ số i của số hạng đó
- Hoặc hết dãy (i>N) mà không có ai nào=k thì thông báo: dãy A không có số hạng nào bằng k
Trang 6Thuật toán tìm kiếm tuần tự
SƠ ĐỒ KHỐI
B1 Nhập N, a 1 ,a 2 ,…a N ,
khóa k;
B2 i1;
B3 Nếu a i =k thì thông
báo chỉ số i rồi kết
thúc;
B4 ii+1;
B5 Nếu i>N thì thông báo
dãy A không có số
hạng nào có giá trị
bằng k, rồi kết thúc;
B6 Quay lại bước 3.
LIỆT KÊ
Nhập N, a 1 ,a 2 ….,a N ,k
i1
a i =k Đưa ra i rồi
kết thúc ii+1
i>N?
Thông báo dãy A không có số hạng nào có giá trị bằng k rồi kết thúc
Đúng Sai
Đúng Sai
Trang 7Củng cố: trong thuật toán tìm kiếm tuần tự
Trang 8Chú ý:
1.Áp dụng thuật toán này khi dãy chưa được sắp xếp.
2.Nguyên tắc tìm kiếm là phải xác định được khóa
3.Phải so sánh lần lượt từng phần tử của dãy với khóa để thực hiện tìm kiếm
Trang 9Dặn dò 1.Hoàn thiện các bài tập từ 1 đến 7 trong sgk trang 44
2.Làm bài tập 1.32; 1.33; 1.34;1.36; 1.39;1.44
Trang 10XÁC ĐỊNH BÀI TOÁN OUPUT
I NPUT Dãy A gồm N, dãy a 1 ,a 2 ,…,a N
Dem (số lượng số =0)?
BÀI 7.sgk tr 44:
Dãy A gồm N số nguyên a 1 ,a 2 ,…,a N Đưa ra:
số lượng số 0 trong dãy
Áp dụng thuật toán tìm kiếm tuần tự
Các số nguyên trong dãy có thể giống nhau và khóa k=0
Trang 11Gợi ý: Áp dụng thuật toán tìm kiếm tuần tự
Trang 12BÀI 7:ÁP DỤNG TÌM KIẾM TUẦN TỰ
- Khởi tạo Dem0;
- cho I chạy từ 1 đến hết dãy lần lượt
so sánh ai với 0 Nếu ai=0 thì tăng biến đếm lên 1
Trang 13B1 Nhập N, a 1 ,a 2 ,…a N .
B5 Nếu i>N thì đưa ra Dem, rồi kết thúc;
LIỆT KÊ
BÀI 7:ÁP DỤNG TÌM KIẾM TUẦN TỰ
Trang 14SƠ ĐỒ KHỐI
Nhập N, a 1 ,a 2 ….,a N
i1; Dem0
a i =0
ii+1
i>N?
Đưa ra Dem rồi kết thúc
Đúng Sai
Đúng Sai
DemDem +1
BÀI 7:ÁP DỤNG TÌM KIẾM TUẦN TỰ