Cần sắp xếp các số hạng để dãy A trở thành.. Cần sắp xếp các số hạng để dãy A trở thành.[r]
(1)§4
§4 §4 BÀI TỐN VÀ THUẬT TOÁNBÀI TOÁN VÀ THUẬT TOÁN
(2)Ví dụ 1
Ví dụ 1 Kiểm tra tính nguyên tố số Kiểm tra tính nguyên tố số nguyên dương
nguyên dương
Xác định toánXác định toán
Input: N số nguyên dương;Input: N số nguyên dương;
Output: "N số nguyên tố" "N Output: "N số nguyên tố" "N không số nguyên tố"
khơng số ngun tố"
3 Một số ví dụ thuật toán
(3) Ý tưởng:Ý tưởng:
Nếu N = N khơng số ngun tố;Nếu N = N không số nguyên tố; Nếu < N < N số nguyên tố;Nếu < N < N số nguyên tố;
Nếu NNếu N khơng có ước số khơng có ước số phạm vi từ đến phần nguyên bậc hai
phạm vi từ đến phần nguyên bậc hai
của N N số nguyên tố
của N N số nguyên tố
3 Một số ví dụ thuật tốn
(4) Thuật toánThuật toán
a) Thuật toán diễn tả cách liệt kê
a) Thuật toán diễn tả cách liệt kê
Bước 1Bước 1: Nhập số nguyên dương : Nhập số nguyên dương NN;;
Bước 2Bước 2: Nếu : Nếu NN = thơng báo = thơng báo NN không không
nguyên tố kết thúc; nguyên tố kết thúc;
Bước 3Bước 3: Nếu : Nếu NN < thơng báo < thơng báo NN
nguyên tố kết thúc; nguyên tố kết thúc;
Buớc 4Buớc 4: i: i 2; 2;
3 Một số ví dụ thuật toán
(5) Thuật toánThuật toán
a) Thuật toán diễn tả cách liệt kê
a) Thuật toán diễn tả cách liệt kê
Bước 5Bước 5: Nếu i > thơng báo N : Nếu i > thơng báo N ngun tố kết thúc;
nguyên tố kết thúc;
Bước 6Bước 6: Nếu N chia hết cho i thơng : Nếu N chia hết cho i thơng báo N không nguyên tố kết thúc;
báo N không nguyên tố kết thúc;
Bước 7Bước 7: i : i i + quay lại bước 5. i + quay lại bước 5.
3 Một số ví dụ thuật tốn
3 Một số ví dụ thuật toán
(6) Thuật toánThuật toán
b) Thuật toán diễn tả sơ đồ b) Thuật toán diễn tả sơ đồ
khối khối
3 Một số ví dụ thuật tốn
(7)Nhập N Nhập N N=1 ? N=1 ? N<4 ? N<4 ? i
i 2
i
i i + i +
i > ?
i > ?
N chia hết
N chia hết
cho i ?
cho i ?
-N NTốN NTố -Kết thúcKết thúc
-N không Ntố
-N không Ntố
(8)N = 29 ; phần nguyên = 5
N = 29 ; phần nguyên = 5 3 Một số ví dụ thuật tốn
3 Một số ví dụ thuật tốn
2
22
2 3333 4444 5555 6666
i =
i =
29/2
29/229/2
29/2 29/329/329/329/3 29/429/429/429/4 29/529/529/529/5 N/i
N/i
Không
Không
Không
Không KhôngKhôngKhôngKhông KhôngKhôngKhôngKhông KhôngKhôngKhôngKhông Chia hết
Chia hết
Không?
Không?
29
(9)N = 45 ; phần nguyên = 6
N = 45 ; phần nguyên = 6 3 Một số ví dụ thuật tốn
3 Một số ví dụ thuật toán
2
22
2 3333
i =
i =
45/2
45/2
45/2
45/2 45/345/345/345/3
N/i
N/i
Không
Không
Không
Không Chia hếtChia hếtChia hếtChia hết
Chia hết
Chia hết
Không?
Không?
45
(10)Ví dụ 2
Ví dụ 2 Bài tốn xếp:Bài toán xếp:
Cho dãy A gồm N số nguyên a
Cho dãy A gồm N số nguyên a11, a, a22, , a, , aNN
Cần xếp số hạng để dãy A trở thành
Cần xếp số hạng để dãy A trở thành
dãy không giảm (tức số hạng trước không
dãy không giảm (tức số hạng trước không
lớn số hạng sau)
lớn số hạng sau)
3 Một số ví dụ thuật toán
(11) Xác định toánXác định toán
Input: Dãy A gồm N số nguyên aInput: Dãy A gồm N số nguyên a11, a, a22, , a, , aNN.. Output: Dãy A xếp lại thành dãy Output: Dãy A xếp lại thành dãy
không giảm
không giảm
Ý tưởng: Ý tưởng: Với cặp số hạng đứng liền kề Với cặp số hạng đứng liền kề
dãy, số trước lớn số sau ta đổi chỗ chúng
dãy, số trước lớn số sau ta đổi chỗ chúng
cho Việc lặp lại, khơng
cho Việc lặp lại, khơng
có đổi chỗ xảy
có đổi chỗ xảy
3 Một số ví dụ thuật tốn
(12) Thuật toán: Cách liệt kêThuật toán: Cách liệt kê
Bước 1: Nhập N, dãy aBước 1: Nhập N, dãy a11, a, a22, , a, , aNN;; Bước 2: M Bước 2: M N; N;
Bước 3: Nếu M < đưa dãy A Bước 3: Nếu M < đưa dãy A xếp kết thúc;
sắp xếp kết thúc;
Bước 4: M Bước 4: M M – 1, i M – 1, i 0; 0; Bước 5: i Bước 5: i i + 1; i + 1;
Bước 6: Nếu i > M quay lại bước 3;Bước 6: Nếu i > M quay lại bước 3;
Bước 7: Nếu aBước 7: Nếu aii > a > ai+1i+1 tráo đổi a tráo đổi aii a ai+1 i+1 ;; Bước 8: Quay lại bước 5.Bước 8: Quay lại bước 5.
3 Một số ví dụ thuật tốn
(13)Nhập N ; a
Nhập N ; a11,a,a22, a, aNN M
M N N M<2 ?
M<2 ?
M
M M -1 ; i M -1 ; i 0
Tráo đổi a
Tráo đổi aii a ai+1i+1
i
i i + i + i > M ?
i > M ?
-Đưa AĐưa A -Kết thúcKết thúc
đúng
đúng
đúng saisai sai sai
đúng
Sơ đồ khối
a
aii > a > ai+1i+1 ? ?
(14)04/11/21 § BÀI TỐN VÀ THUẬT TỐN 14
§4
§4 §4 BÀI TỐN VÀ THUẬT TOÁNBÀI TOÁN VÀ THUẬT TOÁN
(15)Ví dụ Ví dụ Bài tốn tìm kiếmBài tốn tìm kiếm
Cho dãy A gồm N số nguyên, đôi Cho dãy A gồm N số nguyên, đôi
khác nhau: a
khác nhau: a11, a, a22, , a, , aNN số nguyên k số nguyên k Cần biết có hay khơng số i (1
Cần biết có hay không số i (1 i i N) N) mà a
mà aii = k Nếu có cho biết số = k Nếu có cho biết số
Số nguyên k gọi khóa tìm kiếm Số ngun k gọi khóa tìm kiếm
(gọi tắt khóa)
(gọi tắt khóa)
3 Một số ví dụ thuật tốn
(16)Thuật tốn Tìm kiếm Thuật tốn Tìm kiếm
(Sequential Search)
(Sequential Search)
Xác định toánXác định toán
InputInput:: Dãy A gồm N số nguyên đôiDãy A gồm N số nguyên đôi một một
khác a
khác a11, a, a22, , a, , aNN số nguyên k; số nguyên k;
OutputOutput:: Chỉ số i mà aChỉ số i mà aii = k thông báo = k thông báo
khơng có số hạng dãy A có giá trị khơng có số hạng dãy A có giá trị
k k
3 Một số ví dụ thuật tốn
(17)Ý tưởngÝ tưởng:: thực cách tự nhiên Lần thực cách tự nhiên Lần lượt từ số hạng thứ nhất,so sánh giá trị số hạng
lượt từ số hạng thứ nhất,so sánh giá trị số hạng
đang xét với khóa gặp số
đang xét với khóa gặp số
hạng khóa dãy xét hết
hạng khóa dãy xét hết
khơng có giá trị khố Trong trường
khơng có giá trị khố Trong trường
hợp thứ hai dãy A khơng có số hạng
hợp thứ hai dãy A khơng có số hạng
khoá
khoá
3 Một số ví dụ thuật tốn
(18)Thuật toánThuật toán
a) Cách liệt kê a) Cách liệt kê
Bước 1: Bước 1: Nhập Nhập NN, số hạng , số hạng aa11, a, a22, , a, , aNN và khóa và khóa kk;; Bước 2:Bước 2: i i 1 1;;
Bước 3: Nếu Bước 3: Nếu aaii = k = k thì thơng báo số thì thơng báo số ii, kết thúc;, kết thúc; Bước 4:Bước 4: i i i + 1i + 1;;
Bước 5:Bước 5: Nếu Nếu i i > > N N thì thơng báo dãy A khơng có số thì thơng báo dãy A khơng có số hạng có giá trị
hạng có giá trị kk, kết thúc;, kết thúc; Bước 6:Bước 6: Quay lại bước Quay lại bước
3 Một số ví dụ thuật tốn
(19)Nhập N ; a1,a2, aN ,k i
ai = k ? i i + i > N ?
-Đưa i -Kết thúc
đúng
sai sai
sai sai
đúng
b) Sơ đồ khối
(20)Thuật tốn Tìm kiếm nhị phân (Binary Search): Thuật tốn Tìm kiếm nhị phân (Binary Search):
Cho dãy tăng gồm N số nguyên
Cho dãy tăng gồm N số nguyên aa11, a, a22, , a, , aNN và số số nguyên k Tìm i mà
nguyên k Tìm i mà aaii = k ? = k ?
Xác định toánXác định toán
InputInput: : Dãy tăng aDãy tăng a11, a, a22, , a, , aNN số nguyên k; số nguyên k;
OutputOutput: : Chỉ số i mà aChỉ số i mà aii = k thông báo không = k thơng báo khơng
có số hạng dãy có giá trị k
có số hạng dãy có giá trị k
3 Một số ví dụ thuật tốn
(21)Ý tưởngÝ tưởng: :
So sánh k với số hạng a
So sánh k với số hạng aGiuaGiua "giữa "giữa dãy", Giua = (dau + cuoi)/2.
dãy", Giua = (dau + cuoi)/2.
Khi đó, xảy ba trường Khi đó, xảy ba trường
hợp sau hợp sau::
3 Một số ví dụ thuật toán
(22)Nếu aNếu aGiuaGiua = k Giua số cần tìm Việc tìm = k Giua số cần tìm Việc tìm
kiếm kết thúc
kiếm kết thúc
Nếu aNếu aGiuaGiua > k tìm tiếp dãy a > k tìm tiếp dãy adaudau, a, adau+1dau+1, , a, , aGiua–Giua–
1
1
Nếu aNếu aGiuaGiua < k thực tìm kiếm dãy a < k thực tìm kiếm dãy aGiua+1Giua+1, ,
a
aGiua+2Giua+2, , a, , acuoi cuoi
Quá trình lặp lại tìm Quá trình lặp lại tìm
thấy phạm vi tìm kiếm rỗng (khơng thấy)
thấy phạm vi tìm kiếm rỗng (khơng thấy) 3 Một số ví dụ thuật toán
(23)Thuật toánThuật toán
a)
a) Cách liệt kêCách liệt kê
Bước 1: NhậpBước 1: Nhập N, dãy N, dãy aa11, a, a22, , a, , aNN số k ;và số k ; Bước 2:Bước 2: Dau Dau 1, Cuoi 1, Cuoi N ; N ;
Bước 3:Bước 3: Giua Giua (dau + cuoi)/2 (dau + cuoi)/2 ;;
Bước 4:Bước 4: Nếu a Nếu aGiuaGiua = k thơng báo số = k thơng báo số Giua, kết thúc ;
Giua, kết thúc ;
3 Một số ví dụ thuật toán
(24)Thuật toánThuật toán
a) Cách liệt kê a) Cách liệt kê
Bước 5: Bước 5: Nếu aNếu aGiuaGiua > k đặt Cuoi > k đặt Cuoi Giua–1 Giua–1
chuyển đến bước 7;
chuyển đến bước 7;
Bước 6:Bước 6: Dau Dau Giua + 1; Giua + 1;
Bước 7:Bước 7: Nếu Dau > Cuoi thơng báo dãy A Nếu Dau > Cuoi thơng báo dãy A
khơng có số hạng có giá trị k, kết thúc;
khơng có số hạng có giá trị k, kết thúc;
Bước 8: Quay lại bước 3.Bước 8: Quay lại bước 3.
3 Một số ví dụ thuật tốn
(25)Nhập N ; a1,a2, aN ,k
Dau 1; Cuoi N
aGiua = k ?
Cuoi Giua -
-Đưa Giua -Kết thúc đúng sai sai sai sai đúng
b) Sơ đồ khối
-Khơng có giá trị = k -Kết thúc
Giua (Dau+Cuoi)/2
aGiua > k ?
Dau Giua + Dau > Cuoi ?
sai sai
(26)