slide 1 §4 bài toán và thuật toán § 4 bài toán và thuật toán ví dụ 1 kiểm tra tính nguyên tố của một số nguyên dương xác định bài toán input n là một số nguyên dương output n là số nguyên tố hoặc

26 23 0
slide 1 §4 bài toán và thuật toán § 4 bài toán và thuật toán ví dụ 1 kiểm tra tính nguyên tố của một số nguyên dương xác định bài toán input n là một số nguyên dương output n là số nguyên tố hoặc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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)

Ngày đăng: 11/04/2021, 23:39

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan