Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
1,81 MB
Nội dung
Thửùc hieọn thaựng 10 naờm 2010 VD1: Cho d·y sè A cã: 1, 2, 9, 4, 10, 5; k=4 VD2: Cho d·y sè B cã: 1, 2, 4, 5, 9, 12; k=5 Bài toán: Dãy A được xếp thứ tự gồm N số nguyên khác nhau từ a 1 a N ; và số nguyên k. Cần biết có hay không chỉ số i (1 i N) mà a i = k. Nếu có hãy cho biết chỉ số đó. Bài toán trên có gỡ khác so với bài toán tỡm kiếm theo thuật toán tỡm kiếm tuần tự? B I TO N V THU T TO N THUT TON TèM KiM NH PHN Bài toán: Cho dãy A gồm N số nguyên khác nhau và dãy t ng có a 1 a N ; và số nguyên k.Cần biết có hay không chỉ số i (1 i N) mà a i = k. Nếucó hãy cho biết chỉ số đó. Xác định bài toán: Input: Số nguyên dương N, dãy A được sắp xếp tng a 1 a N ; số nguyên k Output: + Chỉ số i khi a i = k + Thông báo không có số nào trong dãy A bằng k Hãy xác định bài toán trên? B I TO N V THU T TO N THUT TON TèM KiM NH PHN Nhận xét: Vỡ dãy A là dãy tng nên sau mỗi lần so sánh với khóa k đã cho ta sẽ thu hẹp được phạm vi tỡm kiếm + Nếu a Giua = k thỡ giua là chỉ số cần tỡm rồi kết thúc thuật toán. + Nếu a Giua > k việc tỡm kiếm chỉ thực hiện trên dãy a 1 , a 2 , a Giua -1 . + Nếu a Giua < k thỡ thực hiện tỡm kiếm trên dãy a Giua + 1 , a Giua + 2 , a N ý tưởng: + Chọn số hạng ở gia dãy a Giua so sánh với k, trong đó Giua = [(N + 1)/2] 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 khóa k trong dãy A hoặc phạm vi tỡm kiếm bằng rỗng. B I TO N V THU T TO N THUT TON TèM KiM NH PHN Lu ý: chØ sè i, Dau, Cuoi, Giua ®Òu cã gi¸ trÞ nguyªn B I TO N V THU T TO N À Á À Ậ Á THUẬT TOÁN TÌM KiẾM NHỊ PHÂN Diễn tả thuật toán theo cách liệt kê Diễn tả thuật toán theo cách liệt kê - Bước 1: Nhập N, các số hạng a - Bước 1: Nhập N, các số hạng a 1 1 , a , a 2 2 , , a , , a N N và khóa k và khóa k - Bước 2: - Bước 2: Dau Dau 1 , 1 , Cuoi Cuoi N N - Bước 3: - Bước 3: Giua Giua [ [ (Dau + Cuoi ) / 2] (Dau + Cuoi ) / 2] - Bước 4: Nếu a - Bước 4: Nếu a Giua Giua = k th = k th ỡ ỡ thông báo chỉ số Giua rồi kết thúc thông báo chỉ số Giua rồi kết thúc - Bước 5: Nếu a - Bước 5: Nếu a Giua Giua > k th > k th ỡ ỡ đặt đặt Cuoi Cuoi Giua-1 Giua-1 , rồi chuyển đến bước 7 , rồi chuyển đến bước 7 - Bước 6: - Bước 6: Dau Dau Giua+1 Giua+1 ; ; - Bước 7: Nếu - Bước 7: Nếu Dau > Cuoi Dau > Cuoi th th ỡ ỡ thông báo dãy A không có số hạng nào 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. có giá trị bằng k, rồi kết thúc. - Bước 8: Quay lại bước 3 - Bước 8: Quay lại bước 3 B I TO N V THU T TO N THUT TON TèM KiM NH PHN Diễn tả thuật toán theo sơ đồ khối Nhập N, dãy a 1 a N , số k Dau 1, Cuoi N Giua [(Dau + Cuoi)/2] a Giua = k ? a Giua > k ? sai đúng đưa ra Giua rồi kết thúc Cuoi Giua - 1 Dau Giua + 1 Dau > Cuoi? đúng sai đúng Dãy A không có số hạng nào bằng k rồi kết thúc sai * Mô phỏng thuật toán tỡm kiếm nhị phân Ví dụ 1: Cho N = 6 và dãy A sắp xếp tng dần: 1, 2, 4, 5 , 9 , 12 ; số k = 5 i i 1 1 2 2 3 3 4 4 55 6 6 Dóy A Dóy A 1 1 2 2 4 4 55 9 9 12 12 Dau Dau Cuoi Cuoi Giua Giua a a Giua Giua Lần duyệt Lần duyệt Kết luận: ở lần duyệt thứ 3 thỡ a Giua = k = 5. Vậy chỉ số cần tỡm là : i = Giua = 4 * Mô phỏng thuật toán tỡm kiếm nhị phân Ví dụ 1: Cho N = 6 và dãy A sắp xếp tng dần: 1, 2, 4, 5 , 9 , 12 ; số k = 10 i i 1 1 2 2 3 3 4 4 55 6 6 Dóy A Dóy A 1 1 2 2 4 4 55 9 9 12 12 Dau Dau Cuoi Cuoi Giua Giua a a Giua Giua Lần duyệt Lần duyệt Kết luận: Tại lần duyệt thứ 4 Dau > Cuoi nên kết luận trong dãy A không có số hạng nào có giá trị bằng 10 [...]...Củng cố và hướng dẫn về nhà - Cho N = 6 và dãy A được sắp xếp giảm dần: 12, 9, 5, 4, 2, 1; số k = 4 Mô phỏng thuật toán nhị phân - Chú ý: dãy số sau khi sắp xếp thứ tự, ta dùng thuật toán tim kiếm nhị phân - Hoàn thành các bài tập ở Sgk và một số bài tập ở SBT để chuẩn bị cho giờ bài tập tiết sau Thửùc hieọn thaựng 10 naờm 2010 . 6 và dãy A sắp xếp tng dần: 1, 2, 4, 5 , 9 , 12 ; số k = 5 i i 1 1 2 2 3 3 4 4 5 5 6 6 Dóy A Dóy A 1 1 2 2 4 4 5 5 9 9 12 12 Dau Dau Cuoi Cuoi Giua Giua. naờm 2010 VD1: Cho d·y sè A cã: 1, 2, 9, 4, 10, 5; k=4 VD2: Cho d·y sè B cã: 1, 2, 4, 5, 9, 12; k =5 Bài toán: Dãy A được xếp thứ tự gồm N số nguyên khác