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

Quá trình này—vi t gi mã tr

c r i m i vi t ph

ng th c th c hi n sau—đ

c g i là

ế

ướ ồ

ế

ươ

ượ ọ

phát tri n t

trên xu ng

(xem http://en.wikipedia.org/wiki/Top-down_and_bottom-up_design).

14.3 S p x p

ế

Bây gi khi đã làm c bài l n lung tung lên, ta c n m t cách khi n nó tr l i tr t t . Có m t thu t toán

ế

ở ạ ậ ự

s p x p gi ng v i thu t toán tr n đ n không ng . Nó đ

c g i là

ế

ế

ượ ọ

s p x p ch n

ế

b i nó ho t đ ng d a

ạ ộ

trên vi c duy t m ng l p đi l p l i và m i l n duy t thì ch n l y lá bài th p nh t còn l i.

ặ ạ

ỗ ầ

ọ ấ

Trong l n l p th nh t, ta tìm l y lá bài th p nh t r i đ i ch cho lá bài v trí th 0. Trong l n l p

ầ ặ

ấ ồ ổ

ở ị

ầ ặ

th

ứ i, ta tìm l y lá bài th p nh t bên ph i v trí

ả ị i r i đ i ch nó cho lá bài th

ồ ổ

ứ i.

Sau đây là gi mã cho cách s p x p ch n:

ế

for

(

int

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

// tìm lấy lá bài thấp nhất tại vị trí i, hoặc bên phải chỗ đó

// đổi chỗ lá bài thứ i với lá bài thấp nhất tìm được

}

M t l n n a, gi mã giúp cho vi c thi t k các

ộ ầ

ế ế

ph

ng th c tr giúp

ươ

. Trong tr

ng h p này, ta có th

ườ

dùng l i

ạ swapCards, b i v y ta ch c n có m t ph ng th c m i, có tên

ở ậ

ỉ ầ

ươ

indexLowestCard, đ nh n m t

m ng nh ng lá bài và m t ch s n i c n b t đ u tìm ki m.

ỉ ố ơ ầ

ắ ầ

ế

14.4 C bài con

V y ta nên bi u di n m t ph n bài hay m t d ng t p con c a c bài đ nh th nào? M t kh năng là

ộ ạ

ủ ỗ

ư ế

t o nên m t l p m i có tên

ộ ớ

Hand, và nó có th m r ng

ể ở ộ Deck. M t kh năng khác, nh tôi trình bày

ư

đây, là bi u di n m t ph n bài b ng đ i t

ng

ố ượ Deck nh ng có ít h n 52 lá bài.

ư

ơ

Ta có th mu n m t ph

ng th c,

ươ

ứ subdeck, đ nh n m t c bài và m t kho ng ch s , r i tr l i m t c

ộ ỗ

ỉ ố ồ ả ạ

ộ ỗ

bài m i ch a t p con nh ng lá bài đã ch đ nh:

ứ ậ

ỉ ị

public static

Deck subdeck(Deck deck,

int

low,

int

high) {

Deck sub =

new

Deck(high-low+1);

for

(

int

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

sub.cards[i] = deck.cards[low+i];

}

return

sub;

}

Chi u dài c a c bài con là

ủ ỗ

high-low+1 b i c lá bài th p (low) l n cao (high) đ u đ

c tính vào. Cách

ở ả

ượ

tính có th gây nh m l n, và d n đ n l i “l ch m t”. Cách tránh l i này t t nh t th

ng là v hình minh

ế ỗ ệ

ườ

h a.

Vì ta đã cung c p

ấ new vào m t đ i s , nên contructor đ c kích ho t s là cái đ u tiên, v n ch huy đ ng

ộ ố ố

ượ

ạ ẽ

m ng mà không huy đ ng b t kì lá bài nào. Bên trong vòng l p

ặ for, c bài con đ c đi n đ y nh ng b n

ượ

sao tham chi u t c bài l n.

ế ừ ỗ

D

i đây là s đ tr ng thái c a c bài con đ

c t o nên b ng nh ng tham s

ướ

ơ ồ ạ

ủ ỗ

ượ ạ

ố low=3 và high=7. K t qu

ế

là m t ph n bài g m 5 lá đ

c chung v i c bài ban đ u; nghĩa là theo cách đ t bí danh (alias).

ượ

ớ ỗ

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.