Tit 12 Bi 4 BI TON V THUT
Tiết 12 Bài 4. BÀI TOÁN VÀ THUẬT TOÁN (TÌM KIẾM TUẦN TỰ)
3. 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) 2
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à ai=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. XÁC ĐỊNH BÀI TOÁN INPUT OUPUT 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à ai=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
TÌM KIẾM TUẦN TỰ Ví dụ: Dãy A gồm các số a 1 a 2 a 3 N=8 a 4 a 5 a 6 a 7 a 8 8 10 5 7 4 2 9 6 ≠ ≠ ≠ || ≠ ≠ 2 3 || k Tìm thấy Không tìm thấy K=2 , có a 6=k, vậy chỉ số cần tìm là i=6 K=3 , không có giá trị nào 4
TÌM KIẾM TUẦN TỰ (Sequential Search) • Ý tưởng: 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. 5
Thuật toán tìm kiếm tuần tự LIỆT KÊ B 1. Nhập N, a 1, a 2, …a. N, khóa k; B 2. i 1; B 3. Nếu ai=k thì thông báo chỉ số i rồi kết thúc; B 4. i i+1; B 5. 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; B 6. Quay lại bước 3. SƠ ĐỒ KHỐI Nhập N, a 1, a 2…. , a. N, k i 1 ai=k Đúng Đưa ra i rồi kết thúc Sai i i+1 Sai i>N? Đúng Thông báo dãy A không có số 6 hạng nào có giá trị bằng k rồi kết thúc
Củng cố: trong thuật toán tìm kiếm tuần tự 1. Khi nào thuật toán dừng nhiêu phần tử bằng k? lại? A. 0 B. 1 A. Khi ai=k hoặc i>N B. Khi i >2 hoặc ai=k C. 2 C. Khi i<N hoặc ai<>k D. N D. Khi i>N hoặc ai<k 4. Nếu cho dãy gồm các số 2. Biến i có thể nhận các giá nguyên bất kỳ thì tối đa có trị là: bao nhiêu số =k A. Từ 0 đến N A. 1 số B. Từ 0 đến N-1 B. N số C. Từ 1 đến N+1 C. k số D. Từ 2 đến N D. N – 1 số 3. Trong dãy có tối đa bao
Chú ý: 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
Dặ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
Áp dụng thuật toán tìm kiếm tuần tự 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 XÁC ĐỊNH BÀI TOÁN INPUT Dãy A gồm N, dãy a 1, a 2, …, a. N OUPUT Dem (số lượng số =0)? Các số nguyên trong dãy có thể giống nhau và khóa k=0
Gợi ý: Áp dụng thuật toán tìm kiếm tuần tự 1. Khi nào thuật toán dừng lại? A. 0 A. Khi i>N B. 1 C. N B. Khi i >2 C. Khi i<N D. 2 D. Khi i=N -1 4. Mỗi khi ai =0 thì giá trị của 2. Trong dãy có tối thiểu bao biến Dem thay đổi thế nào? nhiêu phần tử bằng 0? A. Dem=1 A. 2 B. Dem = N -1 B. 1 C. Dem= i C. 0 D. Dem = Dem + 1 D. N 3. Khởi tạo giá trị của biến dem bằng bao nhiêu?
BÀI 7: ÁP DỤNG TÌM KIẾM TUẦN TỰ • Ý tưởng: - Khởi tạo Dem 0; - 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. 12
BÀI 7: ÁP DỤNG TÌM KIẾM TUẦN TỰ LIỆT KÊ B 1. Nhập N, a 1, a 2, …a. N. B 2. i 1; Dem 0 B 3. Nếu ai=0 thì Dem + 1 B 4. i i+1; B 5. Nếu i>N thì đưa ra Dem, rồi kết thúc; B 6. Quay lại bước 3.
BÀI 7: ÁP DỤNG TÌM KIẾM TUẦN TỰ SƠ ĐỒ KHỐI Nhập N, a 1, a 2…. , a. N i 1; Dem 0 ai=0 Đúng Dem +1 Sai i i+1 Sai i>N? Đúng Đưa ra Dem rồi kết thúc 14
- Slides: 15