1. Trang chủ
  2. » Cao đẳng - Đại học

tim kiem

18 5 0

Đ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

Định dạng
Số trang 18
Dung lượng 1,96 MB

Nội dung

Nếu Dau>Cuoi thì thông báo dãy A không có số hạng có gíá trị bằng k rồi kết thúc. B8[r]

(1)

1

(2)

2

Tớ cá Hãy tìm tớ

Tớ cá Hãy tìm tớ

đám bạn nhé!!

đám bạn nhé!!

1 2 3 4 5

Không phải rồi!

Ồ! Không phải rồi!

Ồ! Lại sai rồi!

Hi! Hi! Chưa đâu nghen!

(3)

3 XÁC ĐỊNH BÀI TOÁN

XÁC ĐỊNH BÀI TOÁN

OUPUT

INPUT Dãy A gồm N số nguyên khác a1,a2,…,aN số

nguyên k

Chỉ số i mà ai=k thơng báo khơng có số hạng của dãy A có giá trị k

TÌM KIẾM TUẦN TỰ

TÌM KIẾM TUẦN TỰ

(Sequential Search)

(4)

4

TÌM KIẾM TUẦN TỰ

TÌM KIẾM TUẦN TỰ

(Sequential Search)

(Sequential Search)

Ý tưởng:

Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng với khóa cho đến gặp số hạng khóa số hạng số hạng cần tìm.

(5)

5 TÌM KIẾM TUẦN TỰ

TÌM KIẾM TUẦN TỰ

Ví dụ:

Dãy A gồm số

1 4 2 9 8 11

5 7

a1 a2 a3 a4 a5 a6 a7 a8

N=8

K=9

9

|| k

||

Tìm thấy

, có a6=k, số cần tìm i=6

K=6 , khơng có giá trị

6

|| k

(6)

6

Ví dụ thuật tốn tìm kiếm tuần tự

Ví dụ thuật tốn tìm kiếm tuần tự

9 a5

4 a6 2

a3

8 a7 7

a1

3 a2

6 a4 4

k i

123456 7

n

SAI ĐÚNG

4

k VẬY

(7)

7

Thuật tốn tìm kiếm tuần tự

Thuật tốn tìm kiếm tuần tự

SƠ ĐỒ KHỐI B1 Nhập N, a1,a2,…aN,

khóa k;

B2 i1;

B3 Nếu ai=k thơng

báo số i kết thúc;

B4 ii+1;

B5.Nếu i>N thơng báo dãy A khơng có số hạng có giá trị bằng k, kết thúc;

B6 Quay lại bước 3.

LIỆT KÊ

Nhập N, a1,a2….,aN,k

i1

ai=k Đưa i

kết thúc ii+1

i>N?

Thông báo dãy A khơng có số hạng có giá trị k kết thúc

Đúng Sai

(8)

8

Nhập N, a1,…,aN,k

ai = k

i > N

Đưa i kềt thúc

SAI

ĐÚNG

i i + 1

i 1

5 7 1 2 9 8

i = 2 i = 3 i = 4 i = 1

SAI

Với i = thì a4 = 2

THUẬT TỐN TÌM KIẾM TUẦN TỰ (Sequentinal Search)

N = 6; k = 2

a1 = 5

i = < N

a2 = 7

i = < N

a3 = 1

i = < N

a4 = 2

a1 a2 a3 a4 a5 a6

Ví dụ

(9)

9

Em có suy nhận xét sau xem

Em có suy nhận xét sau xem

xong?

xong?

• Người đọc sách muốn tìm trang 30 sách.

• Người bắt đầu mở sách

• Số trang vừa mở trang 44.(chưa tìm số

trang cần tìm)

• Như người tìm phạm vi từ số trang

từ đầu trang 44 (khơng cần tìm phần sau trang 44 )

• Tiếp tục phân đơi số trang từ trang đầu trang

(10)

10

Thuật tốn tìm kiếm nhị phân

Thuật tốn tìm kiếm nhị phân

(dãy A tăng)

(dãy A tăng)

OUPUT

INPUT Dãy A tăng gồm N số nguyên khác a1,a2,…,aN

số nguyên k

Chỉ số i mà ai=k thơng báo khơng có số hạng của dãy A có giá trị k

(11)

11 Ý tưởng

Ý tưởng

aGiữa=k aGiữa<k

Chọn aGiữa dãy để so sánh với k, Giữa=

Giữa số cần tìm Kết thúc

Tìm kiến dãy aGiữa+1,,,aN

   

 

2 1

N

aGiữa>k

Việc tìm kiếm chỉ xét dãy

a1,…,aGiữa-1

(12)

12 150 84 6 75 9 8 7 5 4 3 2 1 i 38 15 7 2 A

Biểu diễn thuật toán : Biểu diễn thuật toán :

k = 150

Lượt thứ nhất:: a aGiữaGiữa a a55 = 75; 75 < 150 = 75; 75 < 150

vùng tìm kiếm thu hẹp phạm vi từ a vùng tìm kiếm thu hẹp phạm vi từ a66 a a99

Cuoi = 9

Dau =1Dau =6 Cuoi = 9

151 90

Lượt thứ hai: aGiua a7 = 90 < 150

vùng tìm kiếm thu hẹp phạm vi từ avùng tìm kiếm thu hẹp phạm vi từ a88 a a99

Dau = 8

Lượt thứ ba:: aGiua a8= 150 = k

(13)

13 50 39 75 11 30 6 9 10 9 8 7 5 4 3 2 1 i 8 6 5 1 A

k = 14

Lượt thứ nhất:: a agiữagiữa a a55 = 9; < 14 = 9; < 14

vùng tìm kiếm thu hẹp phạm vi từ a vùng tìm kiếm thu hẹp phạm vi từ a66 a a1010 Lượt thứ hai: a agiữagiữa a a88 = 39; 39 > 14 = 39; 39 > 14

vùng tìm kiếm thu hẹp phạm vi từ a vùng tìm kiếm thu hẹp phạm vi từ a66 a a77;;

Lượt thứ ba: a agiữagiữa a a6 6 = 11; 11 < 14 = 11; 11 < 14

vùng tìm kiếm thu hẹp cịn a vùng tìm kiếm thu hẹp a77;;

Lượt thứ tư: a agiữagiữa a a 7 7 = 30 > 14 = 30 > 14

Cuối=Giửa - = > đầu = Cuối=Giửa - = > đầu =

Thông báo khơng tìm thấy số hạng có giá trị 14. Thơng báo khơng tìm thấy số hạng có giá trị 14.

Dau = 1 Cuoi = 10

(14)

14 Thuật toán liệt kê

Thuật toán liệt kê

       Cuoi Dau

B1 Nhập N, a1,a2,…aN, khóa k;

B2 Dau1, CuoiN;

B3 Giữa

B4 Nếu aGiữa=k thơng

báo số Giữa kết thúc;

B5.Nếu aGiữa>k đặt

Cuoi=Giua-1, chuyển đến bước 7

B6 DauGiua+1;

B7 Nếu Dau>Cuoi thơng báo dãy A

khơng có số hạng có gíá trị k kết thúc

B8 Quay lại B3

LIỆT KÊ

Chọn aGiữa dãy để so sánh với k, Giữa=

       2 1 N

aGiữa=k

Giữa số cần tìm Kết thúc

aGiữa>k

Việc tìm kiếm chỉ xét dãy

a1,a2,…,aGiữa-1

aGiữa<k

Tìm kiến dãy aGiữa+1,aGiữa+2,

…,aN

(15)

15 SƠ ĐỒ KHỐI

Nhập N a1,a2, ,aN;k Dau1;Cuoi1

Giua[(Dau+Cuoi)]/2

aGiua=k?

Dua Giua roi ket thuc

aGiua>k CuoiGiua-1

DauGiua+1 Dau>Cuoi?

Thơng báo dãy A khơng có sơ hạng có giá trị k

rồi kết thúc

Đúng

Đúng Đúng

Sai

Sai Sai

B1 Nhập N, a1,a2,…aN, khóa k;

B2 Dau1, CuoiN;

B3 Giữa [(Dau+Cuoi)]/2

B4 Nếu aGiữa=k thì thông báo số Giữa kết thúc;

B5.Nếu aGiữa>k đặt Cuoi=Giua-1, chuyển đến bước 7

B6 DauGiua+1;

B7 Nếu Dau>Cuoi thơng báo dãy A khơng có số hạng có gíá trị bằng k kết thúc

(16)

16

Nhập N a1,a2, ,aN;k

Dau1;CuoiN

Giua[(Dau+Cuoi)]/2

aGiua=k?

Dua Giua roi ket thuc

aGiua>k CuoiGiua-1

DauGiua+1 Dau>Cuoi?

Thơng báo dãy A khơng có sơ hạng có giá trị k

rồi kết thúc

Đúng

Đúng Đúng

Sai

Sai Sai

SƠ ĐỒ KHỐI

K=21, N=9 i 1 2 3 4 5 6 7 8 9

A 2 4 5 6 9 21 22 30 31

Dau Cuoi Giua aGiua Lan Duyet 1 9 5 9 6 7 9 22 6 6 6 21

Chỉ số cần tìm i=Giua=6

(17)(18)

18

Ngày đăng: 24/05/2021, 17:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w