Bµi 4
Bµi to¸n vµ thuËt to¸n
(tiÕt thø 5)
Mét sè vÝ dô vÒ thuËt to¸n (TiÕp)
ThuËt to¸n t×m kiÕm tuÇn tù
(Sequential Search)
ThuËt to¸n t×m kiÕm nhÞ
ph©n (Binary Search)
Bµi to¸n 1: Cho d·y A gåm N sè
nguyªn kh¸c nhau a
1
,a
2
,…..a
N
vµ
sè nguyªn k. T×m chØ sè i (nÕu
cã) mµ a
i
= k.
1. X¸c ®Þnh c¸c yÕu tè cña bµi to¸n:
Input: ?
N, a
1
, a
2
,….a
N
, k
Output: ?
ChØ sè i mµ a
i
= k
2. Nêu ý tưởng giải bài toán:
Xét bài toán trong trường hợp:
N=5, k= 9
Kết quả ???
Vị trí thứ 2 (i = 2)
Suy nghĩ thế nào để được kết quả đó?? Nếu N = 1000 thì
sao nhỉ?????
? ? ?
? ? ?
6
9
9
15
15
17
17
29
29
a
1
a
a
2
2
a
a
3
3
a
a
4
4
a
a
5
5
6
9
9
15
15
17
17
29
29
a
1
a
a
2
2
a
a
3
3
a
a
4
4
a
a
5
5
N= 5, k = 9
Duyệt từng phần tử từ a
1
đến a
N
.
Vậy cần những biến nào? Khởi tạo ra sao? ý tư
ởng thế nào?
Cần 1 biến:
- Biến chạy i (i có giá trị từ 1 đến 5).
Khởi tạo: i = 1
ý tưởng:
Duyệt phần tử thứ i, bắt đầu từ a
1
. Nếu a
i
= k
thì đưa ra i rồi kết thúc. Nếu không, tăng i lên
một đơn vị và duyệt tiếp.
Khi nào thì bài toán kết thúc?
Khi có i thỏa mãn hoặc khi đã duyệt hết các
phần tử (i > N)
a
1
a
N
i = 1
1 2 3
a
1
N