Thông tin tài liệu
TRƯỜNG THPT ĐỨC TRỌNG TỔ TIN HỌC Giáo viên thực Âu Trường Sơn Bài dạy: Tiết 14: Bài tốn & thuật tóan Thuật tóan tìm kiếm nhị phân (Tin học 10) Kiểm tra cũ Cho dãy số ngun A gồm N số ngun khác a1, …, aN số ngun k Hãy cho biết có hay khơng số i (1 ≤ i ≤ N) cho = k, có cho biết số • • • Xác định tốn Nêu ý tưởng thuật tóan tìm kiếm tuần tự? Viết thuật tóan dạng liệt kê theo ý tưởng Trả lời Bài tóan tìm kiếm: • Input: Dãy A gồm N số hạng khác a1, a2, …, aN khóa k Output: Thơng báo vị trí số hạng k dãy A thơng báo khơng tìm thấy • Ý tưởng: So sánh với khóa k (với 1≤ i ≤ N), = k đưa i thơng báo khơng tìm thấy Thuật tóan B1: Nhập số N, dãy A: a1 aN khóa k B2: i ← B3: Nếu = k thơng báo i kết thúc B4: i ← i + B5: Nếu i > N thơng báo dãy A khơng có số hạng có giá trị k kết thúc B6: Quay lại bước Bài tóan có dãy A dãy số bất kỳ, cho dãy A dãy xếp (tăng giảm) nên tìm kiếm cho nhanh? Ví dụ: Cho dãy khơng giảm a1, …, a1000 (a1Cuoi Dau=Cuoi khơng? Giải thích? Khơng thể được, xem: Cuối Đầu Nếu [đầu] = [cuối] số hạng phải so sánh với khố k Sơ đồ khối (SGK) Nhập vào a1, a2, , aN; k Dau Giua ← ← 1; Cuoi ← N [(Dau + Cuoi)/2] aGiua = k? Đúng Đưa Giua kết thúc Sai aGiua > k ? Đúng Cuoi ← Giua – Sai Dau ← Sai Giua + Dau>Cuoi? Đúng Thơng báo dãy A khơng có số hạng có giá trị k kết thúc • Hãy diễn đạt ý tưởng thuật tóan tìm kiếm nhị phân? • Ý tưởng có ý nghĩa thực tế khơng? Cho ví dụ? Bài tập nhóm Trong thuật tóan tìm kiếm nhị phân SGK: a) Có thể hóan vị B4 B5 khơng? Giải thích? b) Có thể thay phép gán B6 Dau←Giua khơng? Hãy giải thích? (gợi ý: Cho dãy cụ thể giá trị k>aN mơ lại thuật tóan để kiểm tra) Trả lời a Có thể hóan vị B4 B5 b Khơng thể thay phép gán B6 Dau←Giua được, khơng tạo vòng lặp vơ tận khơng có số hạng k Ví dụ: Cho dãy 0, 1, 2, 3, k = Có aGiua =2, cho Dau = Giua tìm kiếm tiếp đọan [2, 3, 5] aGiua = < k, tìm kiếm tiếp đọan [3, 5] Có aGiua = 3, lại tiếp tục tìm kiếm đọan [3, 5] Như tạo vòng lặp vơ hạn Cách giải quyết: thay Dau = Giua + BTVN • Học theo SGK • Bài tập 1.47, 1.48/SBT • Hướng dẫn 1.48: Nhập điểm TBM N học sinh Tính điểm TBM lớp = (tổng điểm TBM)/N Đếm học sinh có điểm TBM < TBM lớp HẾT [...]...Tiết 14: Bài toán & thuật tóan (t5) Thuật tóan tìm kiếm nhị phân Xét bài tóan : Cho dãy số A gồm N số nguyên tăng khác nhau a1, a2, …, aN và số nguyên k, nếu có ai = k (1 ≤ k ≤ N) thì thông báo chỉ số i Tiết 14: Bài toán & thuật tóan (t5) Thuật tóan tìm kiếm nhị phân • Xác định bài tóan: - Input: Dãy A là dãy tăng gồm N số nguyên đôi một... xét trên dãy a1, a2, , aGiua–1 (phạm vi tìm kiếm mới bằng khoảng một nửa phạm vi tìm kiếm trước đó) Nếu aGiua < k thì thực hiện tìm kiếm trên dãy aGiua+1, aGiua+2, , aN Quá trình trên sẽ được lặp lại một số lần cho đến khi hoặc đã tìm thấy khoá k trong dãy A hoặc phạm vi tìm kiếm bằng rỗng Thuật toán tìm kiếm nhị phân (Cách liệt kê) B1: Nhập N, các số hạng a1, a2, , aN và khoá k; B2: Dau ← 1, Cuoi... rồi kết thúc • Hãy diễn đạt ý tưởng của thuật tóan tìm kiếm nhị phân? • Ý tưởng này có ý nghĩa thực tế không? Cho ví dụ? Bài tập nhóm Trong thuật tóan tìm kiếm nhị phân ở SGK: a) Có thể hóan vị B4 và B5 được không? Giải thích? b) Có thể thay phép gán ở B6 bằng Dau←Giua được không? Hãy giải thích? (gợi ý: Cho một dãy cụ thể và một giá trị k>aN rồi mô phỏng lại thuật tóan để kiểm tra) Trả lời a Có thể... ta tìm cách thu hẹp nhanh phạm vi tìm kiếm sau mỗi lần so sánh khoá với số hạng được chọn Để làm điều đó, ta chọn số hạng aGiua ở "giữa dãy" để so sánh với k; Khi đó, chỉ xảy ra một trong ba trường hợp sau: 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ì do dãy A là dãy đã được sắp xếp nên việc tìm kiếm tiếp theo chỉ xét trên dãy a1, a2, , aGiua–1 (phạm vi tìm kiếm. .. được, nếu không sẽ tạo ra vòng lặp vô tận khi không có số hạng nào bằng k Ví dụ: Cho dãy 0, 1, 2, 3, 5 và k = 4 Có aGiua =2, nếu cho Dau = Giua thì tìm kiếm tiếp trên đọan [2, 3, 5] aGiua = 3 < k, tìm kiếm tiếp trên đọan [3, 5] Có aGiua = 3, lại tiếp tục tìm kiếm trên đọan [3, 5] Như vậy tạo ra vòng lặp vô hạn Cách giải quyết: thay Dau = Giua + 1 BTVN • Học theo SGK • Bài tập 1.47, 1.48/SBT • Hướng ... Giua (=9), kết thúc Ý tưởng gọi tìm kiếm nhị phân (hay chia để trị) giúp giảm bớt thao tác so sánh Tiết 14: Bài toán & thuật tóan (t5) Thuật tóan tìm kiếm nhị phân Xét tóan : Cho dãy số A gồm... cần tìm Việc tìm kiếm kết thúc Nếu aGiua > k dãy A dãy xếp nên việc tìm kiếm xét dãy a1, a2, , aGiua–1 (phạm vi tìm kiếm khoảng nửa phạm vi tìm kiếm trước đó) Nếu aGiua < k thực tìm kiếm. .. trị k kết thúc • Hãy diễn đạt ý tưởng thuật tóan tìm kiếm nhị phân? • Ý tưởng có ý nghĩa thực tế không? Cho ví dụ? Bài tập nhóm Trong thuật tóan tìm kiếm nhị phân SGK: a) Có thể hóan vị B4 B5 không?
Ngày đăng: 06/11/2015, 03:33
Xem thêm: Thuật toán Tìm kiếm nhị phân, Thuật toán Tìm kiếm nhị phân, Ví dụ: Cho dãy không giảm a1, …, a1000 (a1<a2<a3<a4<…<a1000) và khóa k = 5000. Giả sử a1000 = 5000