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

/codegym.vn/ - 145

1.

for

(

let

i

=

0

;

i

<

array

.

length

;

i

++)

{

2.

if

(

value

===

array

[

i

])

{

3.

return

i

;

4.

}

5.

}

Lỗi thường gặp #2: Duyệt không đúng phần tử cuối cùng

Ví dụ:

1.

for

(

let

i

=

0

;

i

<=

array

.

length

;

i

++)

{

2.

if

(

value

===

array

[

i

])

{

3.

return

i

;

4.

}

5.

}

Đoạn mã trên sử dụng phép so sánh (<=) khiến cho vòng lặp duyệt quá số lượng
phần tử của mảng (bởi vì vị trí cuối cùng của mảng là array.length – 1 chứ không phải
array.length). Có 2 cách khắc phục trong trường hợp này:
Cách 1: Sử dụng dấu (<) thay vì dấu (<=)

1.

for

(

let

i

=

0

;

i

<

array

.

length

;

i

++)

{

2.

if

(

value

===

array

[

i

])

{

3.

return

i

;

4.

}

5.

}

Cách 2: Chỉ duyệt đến array.length – 1 thay vì duyệt đến array.length

1.

for

(

let

i

=

0

;

i

<=

array

.

length

-

1

;

i

++)

{

2.

if

(

value

===

array

[

i

])

{

3.

return

i

;

4.

}

5.

}

Lỗi thường gặp #3: Sử dụng tìm kiếm nhị phân trên tập dữ liệu chưa được
sắp xếp

Lưu ý rằng thuật toán tìm kiếm nhị phân chỉ hoạt động đúng trên các tập dữ liệu đã
được sắp xếp. Do đó, nếu đầu vào là một tập dữ liệu chưa được sắp xếp thì chúng ta
có 2 lựa chọn:

● Sắp xếp dữ liệu trước khi áp dụng thuật toán tìm kiếm nhị phân
● Sử dụng thuật toán tìm kiếm tuyến tính thay cho thuật toán tìm kiếm nhị phân

Lỗi thường gặp #4: Thông báo sớm trong thuật toán tìm kiếm

Đoạn mã dưới đây là một tình huống khi viết chương trình tra từ điển.

1.

let

inpWord

=

prompt

(

"Nhập vào từ cần tra:"

);

2.

let

enWords

=

[

"Hello"

,

"Google"

,

"Code"

,

"Fun"

];

3.

let

viWords

=

[

"Xin chào"

,

"Google"

,

"Viết mã"

,

"Vui"

];

4.
5.

for

(

let

i

=

0

;

i

<

viWords

.

length

;

i

++)

{

6.

if

(

enWords

[

i

]

===

inpWord

)

{

7. alert

(

"Nghĩa của từ này là: "

+

viWords

[

i

]);

8.

}

else

{

9. alert

(

"Không tìm thấy từ này trong từ điển"

);

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.