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

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);

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.