Tải bản đầy đủ (.ppt) (13 trang)

TIM KIEM NHI PHAN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (958.4 KB, 13 trang )

<span class='text_page_counter'>(1)</span>BÀI TOÁN. TÌM KIẾM NHỊ PHÂN.

<span class='text_page_counter'>(2)</span> KIỂM TRA BÀI CŨ 1/ Haõ trình y ý= tưở baøi14 toá18 n tìm n tự? 2/ yCho daõbaø yA 3 6ng7cuû9a 11 20kieá vaømktuaà = 18 Trả lờ : Laà n tlượ t so saùntính h từchấ ng tsoágì?haïng trong daõy A a.Haõ y icho bieá daõy A coù với khóa cần tìm cho đến khi hoặc tìm thấy một số b.Máy tính sẽ thực hiện đến lần thứ mấy thì sẽ tìm thấy hạng bằng khóa hoặc dãy đã xét hết và không có giá được k trong dãy A? trò naøo baèng khoùa. Trả lời : Dãy A là một dãy có thứ tự không giảm Trả lời : Đến lần thứ 7 thì sẽ tìm được k trong dãy A.

<span class='text_page_counter'>(3)</span> MỤC ĐÍCH: •Bieát. một bài toán có thể được giải bằng nhiều thuật toán khác nhau •Hieåu. phaân. •Bieát. được ý tưởng của bài toán tìm kiếm nhị. trình bày thuật toán theo hai cách liệt kê và sơ đồ khối.

<span class='text_page_counter'>(4)</span> NỘI DUNG 1.Cho ví dụ: - Giaû. sử, có một tấm bìa được kẽ các ô vuông bằng nhau trên cả hai mặt tấm bìa và được đánh số thứ tự trên một mặt. Mặt còn lại tiến hành điền vào các giá trị số khác nhau theo thứ tự từ nhỏ đến lớn,theo chiều từ trái sang phải Maët 1 :. 1. 2. 3. 4. 5. 6. 7. 8. Maët 2 :. 4. 5. 7. 14. 23. 35. 38. 96. - Coù. hai học sinh đố nhau. Làm cách nào để cắt ra được một ô vuông có giá trị bất kỳ, sao cho số lần cắt là ít nhất (với điều kiện là học sinh cắt bìa không được nhìn thấy giá trị các số ghi treân moãi oâ vuoâng) Giả sử cần cắt ra ô vuông có giá trị là :. 23.

<span class='text_page_counter'>(5)</span> . Hoïc sinh 1 :. 1. 2. 3. 4. Hoïc sinh 2 :. 4. 5. 7. 14. 5. 6 23. 7. 8. 38. 96. 35. Kieåm tra oâ vuoâng coù giaù trò caàn caét. . Hoïc sinh 1 : Hoïc sinh 2 :. 5 23. 6. 7. 8. 35. 38. Kieåm tra oâ vuoâng coù giaù trò caàn caét Hoïc sinh 1 : Hoïc sinh 2 :. 5. 6 23. 96.

<span class='text_page_counter'>(6)</span> 2.Xác định bài toán: •Input : Daõy A laø daõy taêng goàm N soá nguyeân khaùc nhau a1, a2, ... , aN vaø moät soá nguyeân k •Output : Chỉ số i mà ai = k hoặc thông báo không tìm thấy k trong daõy A.

<span class='text_page_counter'>(7)</span> 3. Ý tưởng . Sử dụng tính chất dãy A là dãy tăng, ta chia đôi dãy thành hai dãy con, phạm vi tìm kiếm sẽ được thu hẹp sau mỗi lần so sánh khóa với số hạng được chọn.. . Ta chọn số hạng aGiữa để so sánh với k, trong đó:. Giua = [(N + 1) / 2] • Nếu aGiữa = k thì đưa ra Giua, rồi kết thúc • Nếu aGiữa > k thì phạm vi tìm kiếm được thu hẹp lại trên nữa dãy đầu so với dãy ban đầu •. Nếu aGiữa < k thì phạm vi tìm kiếm được thu hẹp lại trên nữa dãy sau so với dãy ban đầu.

<span class='text_page_counter'>(8)</span> Thuật toán – Liệt kê Bước 1: Nhaäp N, caùc soá haïng a1, a2, ... , aN vaø khoùa k Bước 2: Dau  1 , Cuoi  N Bước 3: Giua  [(Dau+Cuoi)/2] Bước 4: Neáu aGiua = k thì thoâng baùo chæ soá Giua, roài keát thuùc. Bước 5: Nếu aGiua > k thì Cuoi = Giua - 1, rồi chuyển đến bước 7 Bước 6: Dau  Giua + 1 Bước 7: Neáu Dau > Cuoi thì thoâng baùo daõy A khoâng coù soá haïng. coù giaù trò baèng k, roài keát thuùc Bước 8: Quay lại bước 3.

<span class='text_page_counter'>(9)</span> Thuật toán – Sơ đồ khối Nhaäp N; daõy a1,. . . ,aN ;k. Dau  1 ; Cuoi  N Giua  [ (Dau + Cuoi)/2 ] Ñöa ra vò trí Giua, roài keát thuùc. Đ. aGiua = k?. S aGiua >k?. Đ. Cuoi  Giua -1. S Dau  Giua + 1 Thoâng baùo K khoâng coù trong daõy soá A , roài keát thuùc. Dau >Cuoi?. Đ. S.

<span class='text_page_counter'>(10)</span> Ví dụ: N=10. K=21. i. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. A. 2. 4. 5. 6. 9. 21. 22. 30. 31. 33. Dau. 1. 6. 6. Cuoi. 10. Giua. 10 5. 8. 7 6. aGiua. 9. 30. 21. Lần duyệt. 1. 2. 3. Ờ lần duyệt 3 thì a giua=k  i=Giua=6..

<span class='text_page_counter'>(11)</span> TỔNG KẾT 1/ Haõ2/y Haõ choy bieá t ñieà kiện cầnthự phải cónđể thể sử duïng so saù nhyuthờ giữcó a thuaä 3/ Cho daõ A =i gian 3 6 7 9c hieä 11 14 18 20 t toán thuật toántìm tìmkieá kieám mtuaà nhònphaâ n ?tìm kieám nhò phaân tự và a)Hãy mô phỏng việc thực hiện tìm kiếm nhị phân, với DãThờ y đãi gian cho phaû moä dãy cómthứ tự. t toán nhị thựiclàhiệ nattìm khoù caànkieá tìm kcuû = a6 thuaä ? phân nhanh hơn thuật toán tuần tự, hạn chế b)Haõ moâsoáphoû c pthự c nhieä tìm m nhò phaâ đángykể lượnnggviệ pheù toá sonsaù nhkieá trong thuaä t n, với khoùa caàn tìm k = 15 ? toán..

<span class='text_page_counter'>(12)</span> DẶN DÒ Làm. bt 5, 6, 7 sgk trang 44 Chuẩn bị trước bài 5: Ngôn ngữ lập trình.

<span class='text_page_counter'>(13)</span>

<span class='text_page_counter'>(14)</span>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×