1. Trang chủ
  2. » Giáo án - Bài giảng

Bài 5 tiet 5

12 228 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm kiếm nhị phân
Chuyên ngành Thuật toán
Thể loại Bài giảng
Năm xuất bản 2010
Định dạng
Số trang 12
Dung lượng 1,81 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài toán: Dãy A được xếp thứ tự gồm N số nguyên khác nhau từ a1 ... Nếu có hãy cho biết chỉ số đó... Nếucó hãy cho biết chỉ số đó... Nhận xét: Vỡ dãy A là dãy tăng nên sau mỗi lần so sá

Trang 1

Thực hiện tháng 10 năm 2010

Trang 2

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

Trang 3

Bài toán: Dãy A được xếp thứ tự gồm N số nguyên khác

nhau từ a1 aN ; và số nguyên k Cần biết có hay không chỉ số i (1≤ i ≤ N) mà ai = 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 À Á À Ậ Á

THUẬT TOÁN TèM KiẾM NHỊ PHÂN

Trang 4

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 aN ; và số nguyên k.Cần biết có hay không chỉ số i (1≤ i ≤ N) mà ai = 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 tăng a1 aN ; số nguyên k Output: + Chỉ số i khi ai = 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 À Á À Ậ Á

THUẬT TOÁN TèM KiẾM NHỊ PHÂN

Trang 5

Nhận xét: Vỡ dãy A là dãy tăng 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 aGiua = k thỡ giua là chỉ số cần tỡm rồi kết thúc thuật toán

+ Nếu aGiua > k việc tỡm kiếm chỉ thực hiện trên dãy

a1 , a2 , a… Giua -1

+ Nếu aGiua < k thỡ thực hiện tỡm kiếm trên dãy

aGiua + 1 , aGiua + 2 , a… N

ý tưởng:

+ Chọn số hạng ở giữa dãy aGiua 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 À Á À Ậ Á

THUẬT TOÁN TèM KiẾM NHỊ PHÂN

Trang 6

Lưu ý:

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

Trang 7

Diễn tả thuật toán theo cách liệt kê

- Bước 1: Nhập N, các số hạng a1 , a2 , , aN và khóa k

- Bước 2: Dau  1 , Cuoi  N

- Bước 3: Giua  [(Dau + Cuoi ) / 2]

- Bước 4: Nếu aGiua = k thỡ thông báo chỉ số Giua rồi kết thúc

- Bước 5: Nếu aGiua > k thỡ đặt Cuoi Giua-1, rồi chuyển đến bước 7

- Bước 6: Dau Giua+1;

- Bước 7: Nếu Dau > Cuoi 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ước 8: Quay lại bước 3

B I TO N V THU T TO N À Á À Ậ Á

THUẬT TOÁN TèM KiẾM NHỊ PHÂN

Trang 8

Diễn tả thuật toán theo sơ đồ khối

Nhập N, dãy a1 aN , số k

Dau 1, Cuoi  N

Giua  [(Dau + Cuoi)/2]

aGiua = k ? sai aGiua > k ?

đú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

Trang 9

* 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 tăng dÇn: 1, 2, 4, 5 , 9 , 12 ; sè k = 5

Dau

Cuoi

Giua

aGiua

LÇn duyÖt

KÕt luËn: ë lÇn duyÖt thø 3 th ì a Giua = k = 5

Trang 10

* 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 tăng dÇn: 1, 2, 4, 5 , 9 , 12 ; sè k = 10

Dau

Cuoi

Giua

aGiua

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

Trang 11

Củng cố và hướng dẫn về nhà

- 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

- 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

Trang 12

Thực hiện tháng 10 năm 2010

Ngày đăng: 29/09/2013, 00:10

Xem thêm

TỪ KHÓA LIÊN QUAN