// sắp xếp các phần bài này bằng mergesort
// trộn ghép lại hai nửa rồi trả lại kết quả
}
Nh th
ng l , có hai cách nghĩ v ch
ng trình đ quy: B n có th nghĩ qua toàn b lu ng th c thi,
ư ườ
ệ
ề ươ
ệ
ạ
ể
ộ ồ
ự
hay b n có th d a vào “ni m tin” (xem M c
ạ
ể ự
ề
ụ 6.9). Tôi đã xây d ng ví d này đ khuy n khích b n t
ự
ụ
ể
ế
ạ ư
duy theo ni m tin nh v y.
ề
ư ậ
Khi d d ng
ử ụ sortDeck đ s p x p các ph n bài, b n không th y b thôi thúc ph i theo lu ng th c thi,
ể ắ
ế
ầ
ạ
ấ ị
ả
ồ
ự
ph i không? B n ch vi c gi s r ng nó ho t đ ng đ
c vì b n đã g l i cho nó r i. , t t c nh ng đi u
ả
ạ
ỉ ệ
ả ử ằ
ạ ộ
ượ
ạ
ỡ ỗ
ồ Ồ ấ ả
ữ
ề
mà b n đã làm cho
ạ
mergeSort tr nên đ quy là thay th m t thu t toán s p x p này v i thu t toán
ở
ệ
ế ộ
ậ
ắ
ế
ớ
ậ
khác. Không có lý do gì đ đ c ch
ng trình khác đi c .
ể ọ
ươ
ả
Th c ra, b n ph i nghĩ m t chút m i l p đ
c tr
ng h p c s đúng đ n và đ m b o r ng cu i cùng
ự
ạ
ả
ộ
ớ ậ
ượ
ườ
ợ ơ ở
ắ
ả
ả ằ
ố
b n s đ t đ n tr
ng h p c s này. Song ngoài đi u đó ra, vi c vi t nên phiên b n đ quy h n s
ạ ẽ ạ ế
ườ
ợ ơ ở
ề
ệ
ế
ả
ệ
ẳ ẽ
không còn v n đ n a. Chúc b n may m n!
ấ
ề ữ
ạ
ắ
14.7 Bi n l p
ế ớ
Đ n gi ta đã th y nh ng bi n đ a ph
ng, v n đ
c khai báo bên trong ph
ng th c, và bi n th c th ,
ế
ờ
ấ
ữ
ế
ị
ươ
ố
ượ
ươ
ứ
ế
ự
ể
v n đ
c khai báo l i đ nh nghĩa l p, th
ng đi tr
c các đ nh nghĩa ph
ng th c.
ố
ượ
ở ờ ị
ớ
ườ
ướ
ị
ươ
ứ
Các bi n đ a ph
ng đ
c t o nên khi m t ph
ng th c đ
c kích ho t và phá h y khi ph
ng th c k t
ế
ị
ươ
ượ ạ
ộ
ươ
ứ ượ
ạ
ủ
ươ
ứ ế
thúc. Các bi n th c th đ
c t o nên khi b n t o nên m t đ i t
ng; các bi n này b phá h y khi đ i
ế
ự
ể ượ ạ
ạ ạ
ộ ố ượ
ế
ị
ủ
ố
t
ng b thu h i rác b nh .
ượ
ị
ồ
ộ
ớ
Bây gi là lúc bi t v
ờ
ế ề bi n l p
ế ớ . Gi ng nh bi n th c th , bi n l p đ c đ nh nghĩa trong m t l i đ nh
ố
ư ế
ự
ể
ế ớ
ượ ị
ộ ờ ị
nghĩa l p tr
c nh ng đ nh nghĩa ph
ng th c, song chúng đ
c nh n di n b ng t khóa
ớ
ướ
ữ
ị
ươ
ứ
ượ
ậ
ệ
ằ
ừ
static. Chúng
đ
c t o nên khi ch
ng trình kh i đ u và còn t n t i đ n t n khi ch
ng trình k t thúc.
ượ ạ
ươ
ở ầ
ồ ạ ế ậ
ươ
ế
B n có th tham chi u t i biên th c th t b t kì đâu bên trong l i khai báo l p. Nh ng bi n l p th
ng
ạ
ể
ế ớ
ự
ể ừ ấ
ờ
ớ
ữ
ế ớ
ườ
đ
c dùng đ l u các giá tr h ng s c n thi t nhi u ch .
ượ
ể ư
ị ằ
ố ầ
ế ở
ề
ỗ
L y ví d , sau đây là m t phiên b n c a
ấ
ụ
ộ
ả ủ Card trong đó suits và ranks là nh ng bi n l p:
ữ
ế ớ
class
Card {
int
suit, rank;
static
String[] suits = {
"Clubs"
,
"Diamonds"
,
"Hearts"
,
"Spades"
};
static
String[] ranks = {
"narf"
,
"Ace"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"10"
,
"Jack"
,
"Queen"
,
"King"
};
public static void
printCard(Card c) {
System.out.println(ranks[c.rank] +
" of "
+ suits[c.suit]);
}
}
Bên trong printCard ta có th tham chi u t i
ể
ế ớ suits và ranks nh th chúng là các bi n đ a ph ng.
ư ể
ế
ị
ươ