THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 127

}

}

Vì cards có ki u là

Card[], nên m t ph n t c a

ầ ử ủ cards thì có ki u là

Card. B i v y

ở ậ cards[i] là m t đ i s

ộ ố ố

h p l cho

ợ ệ

printCard.

13.8 Tìm ki m

ế

Ph

ng th c ti p theo mà tôi s vi t là

ươ

ế

ẽ ế

findCard, đ tìm ki m trong m t m ng ch a

ế

ứ Card, xem li u r ng

ệ ằ

m ng này có ch a m t lá bài c th hay không. Ph

ng th c này cho tôi m t c h i bi u di n hai thu t

ụ ể

ươ

ộ ơ ộ

toán: tìm ki m tuy n tính

ế

ế

tìm ki m phân đôi

ế

.

Tìm ki m tuy n tính th t d hi u; ta duy t c c bài r i so sánh t ng lá bài v i lá mà ta đang tìm. N u

ế

ế

ậ ễ ể

ệ ả ỗ

ế

th y, ta s tr v ch s t i đó lá bài xu t hi n. N u không có trong c bài, ta tr v -1.

ẽ ả ề ỉ ố ạ

ế

ả ề

public static int

findCard(Card[] cards, Card card) {

for

(

int

i = 0; i< cards.length; i++) {

if

(sameCard(cards[i], card)) {

return

i;

}

}

return

-1;

}

Các đ i s c a

ố ố ủ findCard là card và cards. D ng nh th t kì qu c khi có m t bi n cùng tên v i ki u d

ườ

ư ậ

ế

li u (bi n

ế card thu c ki u

ể Card). Ta có th nh n th y s khác bi t vì bi n b t đ u b ng ch cái th ng.

ấ ự

ế

ắ ầ

ườ

Ph

ng th c này tr l i ngay khi nó phát hi n ra lá bài c n tìm, ncos nghĩa là ta không c n ph i duy t c

ươ

ả ạ

ệ ả

c bài n u đã tìm đ

c lá bài ta c n. Còn n u ta đ n đi m cu i vòng l p, ta bi t r ng lá bài đó không có

ế

ượ

ế

ế

ế ằ

trong c .

N u các quân bài trong c không đ

c s p x p, thì ch ng có cách tìm ki m nào nhanh h n cách này. Ta

ế

ượ ắ

ế

ế

ơ

ph i nhìn t ng lá bài m t, b i n u không ta s không ch c r ng quân bài mong mu n không đó.

ở ế

ắ ằ

Nh ng khi b n tra t trong m t cu n t đi n, b n l i không tìm tuy n tính qua t ng t m t, b i l các

ư

ố ừ ể

ạ ạ

ế

ừ ộ

ở ẽ

t đ u đ

c x p th t r i. Do v y, có kh năng b n s dùng m t thu t toán t

ng t nh tìm ki m chia

ừ ề

ượ ế

ứ ự ồ

ạ ẽ

ươ

ư

ế

đôi:

1. B t đ u m t ch gi a cu n t đi n.

ắ ầ ở ộ

ỗ ữ

ố ừ ể

2. Ch n m t t trên trang đó r i so sánh v i t c n tra.

ộ ừ

ớ ừ ầ

3. N u b n tìm th y t c n tra thì d ng l i.

ế

ấ ừ ầ

4. N u t c n tra x p sau t th y đ

c trên trang, thì hãy l t đ n m t ch nào đó phía sau c a cu n t

ế ừ ầ

ế

ừ ấ

ượ

ậ ế

ố ừ

đi n, r i tr l i b

c 2.

ồ ở ạ ướ

5. N u t c n tra x p tr

c t th y đ

c trên trang, thì hãy l t đ n m t ch nào đó phía tr

c c a cu n t

ế ừ ầ

ế

ướ ừ ấ

ượ

ậ ế

ướ ủ

ố ừ

đi n, r i tr l i b

c

ồ ở ạ ướ 2.

N u b n đã tìm đ n ch mà có hai t li n k nhau trong m t trang, và t c n tra l i n m gi a hai t đó,

ế

ế

ừ ề

ừ ầ

ạ ằ

thì có th k t lu n r ng t c n tra không có trong cu n t đi n.

ể ế

ậ ằ

ừ ầ

ố ừ ể