LẬP TRÌNH CĂN BẢN - Trang 145

/codegym.vn/ - 140

Việc tìm kiếm sẽ được tiếp tục cho tới khi tìm hết các phần tử trên tập dữ liệu con.

Giải thích thuật toán bằng hình minh hoạ

Trong hình minh hoạ trên, chúng ta có:

lowerBound là vị trí của phần tử đầu tiên
upperBound là vị trí của phần tử cuối cùng
midPoint là vị trí của phần tử ở giữa (midPoint bằng trung bình cộng của

lowerBound và upperBound)

Giả sử x là phần tử cần tìm, vậy chúng ta so sánh x với giá trị tại midPoint. Có 3 khả
năng xảy ra:

● Nếu x bằng với giá trị tại midPoint thì trả về giá trị đó, kết thúc thuật toán
● Nếu x nhỏ hơn giá trị tại midPoint thì rõ ràng là x phải nằm trong khoảng

[lowerBound – midPoint], và như vậy thì chúng ta có thể loại bỏ khoảng
[midPoint – upperBound].

● Nếu x lớn hơn giá trị tại midPoint thì rõ ràng là x phải nằm trong khoảng

[midPointupperBound], và như vậy thì chúng ta có thể loại bỏ khoảng
[lowerBound – midPoint].

Mã giả

1.

begin

2. A

// mảng đã được sắp xếp

3. n

// kích cỡ mảng

4. x

// giá trị để tìm kiếm trong mảng

5. lowerBound

=

0

// chỉ số đầu của mảng

6. upperBound

=

n

-

1

// chỉ số cuối của mảng

7.
8.

while

x

not

found

9.

if

upperBound

<

lowerBound

10.

EXIT

:

x kh

ô

ng t

n t

i

.

11. midPoint

=

(

lowerBound

+

upperBound

)

/

2

12.

if

A

[

midPoint

]

<

x

13. lowerBound

=

midPoint

+

1

14.
15.

if

A

[

midPoint

]

>

x

16. upperBound

=

midPoint

-

1

17.

if

A

[

midPoint

]

=

x

18. EXIT

:

x

đượ

c t

ì

m th

y t

i midPoint

19.

end

while

20.

end

21.

Ví dụ:

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.