}
}
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
ế
ế
và 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.
ể ế
ậ ằ
ừ ầ
ố ừ ể