Th t không d th y đi m kh i đ u c a quá trình, nh ng m t cách h p lý là tìm ki m nh ng bài toán
ậ
ễ ấ
ể
ở ầ ủ
ư
ộ
ợ
ế
ữ
nh kh p v i m t d ng m u mà b n đã bi t tr
c.
ỏ
ớ
ớ
ộ ạ
ẫ
ạ
ế
ướ
M c
Ở ụ 8.7 ta đã th y m t vòng l p duy t qua m t chu i r i đ m s l n xu t hi n m t ch cái cho tr c.
ấ
ộ
ặ
ệ
ộ
ỗ ồ ế
ố ầ
ấ
ệ
ộ
ữ
ướ
B n có th coi ch
ng trình này nh m t ví d v m t m u có tên g i “duy t và đ m.” Nh ng y u t t o
ạ
ể
ươ
ư ộ
ụ ề ộ
ẫ
ọ
ệ
ế
ữ
ế ố ạ
nên d ng m u này là:
ạ
ẫ
•
M t t p h p ho c t p d li u có th duy t đ
c, nh m t m ng ho c chu i.
ộ ậ
ợ
ặ ậ
ữ ệ
ể
ệ ượ
ư ộ
ả
ặ
ỗ
•
M t phép th mà b n có th áp d ng cho t ng ph n t trong t p đó.
ộ
ử
ạ
ể
ụ
ừ
ầ ử
ậ
•
M t con tr đ theo dõi xem có bao nhiêu ph n t đ t đ
c phép th này.
ộ
ỏ ể
ầ ử ạ ượ
ử
Trong tr
ng h p đang xét, t p h p là m t m ng các s nguyên. Phép th là li u r ng m t đi m s cho
ườ
ợ
ậ
ợ
ộ
ả
ố
ử
ệ ằ
ộ
ể
ố
tr
c có r i vào m t kho ng giá tr cho tr
c hay không.
ướ
ơ
ộ
ả
ị
ướ
Sau đây là m t ph
ng th c có tên
ộ
ươ
ứ
inRange đ đ m s ph n t trong m ng r i vào m t kho ng cho
ể ế
ố
ầ ử
ả
ơ
ộ
ả
tr
c. Các tham s bao g m m ng và hai s nguyên đ quy đ nh gi i h n d
i và trên c a kho ng này.
ướ
ố
ồ
ả
ố
ể
ị
ớ ạ
ướ
ủ
ả
public static int
inRange(
int
[] a,
int
low,
int
high) {
int
count = 0;
for
(
int
i = 0; i < a.length; i++) {
if
(a[i] >= low && a[i] < high)
count++;
}
return
count;
}
Tôi đã không c th hóa r ng li u vi c giá tr nào đó đúng b ng
ụ ể
ằ
ệ
ệ
ị
ằ low ho c
ặ high thì s đ c coi là r i vào
ẽ ượ
ơ
kho ng hay không, nh ng t mã l nh b n có th th y r ng
ả
ư
ừ
ệ
ạ
ể ấ ằ low đ c coi là r i vào trong còn
ượ
ơ
high thì
không. Đi u này giúp ta tránh đ
c vi c đ m ph n t hai l n.
ề
ượ
ệ ế
ầ ử
ầ
Bây gi ta có th đ m s đi m trong nh ng kho ng c n quan tâm:
ờ
ể ế
ố ể
ữ
ả
ầ
int
[] scores = randomArray(30);
int
a = inRange(scores, 90, 100);
int
b = inRange(scores, 80, 90);
int
c = inRange(scores, 70, 80);
int
d = inRange(scores, 60, 70);
int
f = inRange(scores, 0, 60);
12.9 Histogram
Mã l nh này có s l p l i, nh ng cũng ch p nh n đ
c khi có ít kho ng khác nhau. Nh ng th t
ng
ệ
ự ặ ạ
ư
ấ
ậ
ượ
ả
ư
ử ưở
t
ng n u ta mu n theo dõi s l n xu t hi n c a t ng đi m s , nghĩa là 100 giá tr có th . Lúc đó li u
ượ
ế
ố
ố ầ
ấ
ệ ủ ừ
ể
ố
ị
ể
ệ
b n còn mu n vi t mã l nh n a không?
ạ
ố
ế
ệ
ữ
int
count0 = inRange(scores, 0, 1);
int
count1 = inRange(scores, 1, 2);
int
count2 = inRange(scores, 2, 3);