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

Bài 4. Bài toán và thuật toán (nhị phân)

9 101 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 2,23 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 4. Bài toán và thuật toán (nhị phân) tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả...

Trang 1

TÌM KIẾM NHỊ PHÂN

TỔ 4

Trang 2

TÌM KIẾM NHỊ PHÂN

@ Xác định bài toán

•INPUT : Dãy A là dãy tăng gồm N số nguyên khác nhau

a1, a2,…,aN và số nguyên k;

* OUTPUT : 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.

Trang 3

TÌM KIẾM NHỊ PHÂN

@ Ý tưởng

Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp

nhanh phạm vi tìm kiếm bằng cách so sánh k với số hạng ở

giữa dãy ( agiua), khi đó chỉ xảy ra một trong ba trường hợp :

Quá trình trên được lặp đi lặp lại cho đến khi tìm được Output

* Nếu Giữa = k thì xuất Giữa

* Nếu Giữa > k thì k nằm trong khoảng ĐầuGiữa

* Nếu Giữa < k thì k nằm trong khoảng GiữaCuối

Trường hợp 1:

Giữa

Trường hợp 2:

Giữa

Giữa

Trường hợp 3:

Trang 4

B1: Nhập N, các số hạng a1, a2,…, aN và giá trị khoá k;

B2: Đầu ← 1, Cuối ← N;

B3: Giữa ← [(Đầu +Cuối)\2] ;

Nếu agiữa = k thì thông báo chỉ số Giữa, rồi kết thúc;

Nếu agiữa > k thì đặt Cuối ← Giữa – 1, rồi chuyển đến B7; Nếu agiữa < k thì đặt Đầu ← Giữa +1;

@ THUẬT TOÁN

@ Liệt kê các bước

TÌM KIẾM NHỊ PHÂN

B7: Nếu Đầu > Cuối thì thông báo dãy A không có số hạng

có giá trị bằng k, rồi kết thúc;

B8: Quay lại B3;

B4:

B5:

B6:

Trang 5

* Nếu Giữa = k thì xuất Giữa

* Nếu Giữa > k thì k nằm trong khoảng ĐầuGiữa

* Nếu Giữa < k thì k nằm trong khoảng GiữaCuối

Trường hợp 1:

Giữa

Trường hợp 2:

Giữa

Trường hợp 3:

Trang 6

@ SƠ ĐỒ KHỐI

TÌM KIẾM NHỊ PHÂN

Nhập N và a1, a2,…,an và số k

Đầu ← 1; Cuối ← N Giữa ← [(Đầu+cuối)/2]

aGiữa= k?

Đưa ra Giữa rồi kết thúc

aGiữa> k

Đầu ← Giữa +1

Cuối ← Giữa -1 Đầu > Cuối?

Thông báo dãy A không

có số hạng có giá trị bằng k

rồi kết thúc

Đúng

Sai Sai

Đúng Đúng

Trang 7

10 9

8 7

5 4

3 2

1 i

33 31

30 22

21 9

6 5

4 2

A

Với k = 9 và dãy A gồm 10 số hạng như sau:

Lượt thứ nhất : agiua = [(1+10)/2] = 5.

@ MÔ PHỎNG THUẬT TOÁN

TÌM KIẾM NHỊ PHÂN

Ta có : a5 = 9 = k

 Vậy chỉ số cần tìm là i = 5.

Ví dụ 1:

6

5

9

Trang 8

10 9

8 7

5 4

3 2

1 i

33 31

30 22

21 9

6 5

4 2

A

Với k = 21 và dãy A gồm 10 số hạng như sau:

Lượt thứ nhất : agiua là a5 = 9; 9 < 21

 vùng tìm kiếm thu hẹp trong phạm vi từ a6 a10;

33 31

30 22

21

Lượt thứ hai : agiua là a8 = 30; 30 > 21

 vùng tìm kiếm thu hẹp trong phạm vi từ a6 a7;

Lượt thứ ba : agiua là a6 = 21; 21= 21

 Vậy số cần tìm là i = 6.

22

21

6

21

@ MÔ PHỎNG THUẬT TOÁN

TÌM KIẾM NHỊ PHÂN

Ví dụ 2:

Ngày đăng: 21/09/2017, 11:31

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w