Em hãy viết thuật toán tìm giá trị nhỏ nhất của một số nguyên sử dụng phương pháp liệt kê

Input: Số $N$ và dãy $N$ số $a_{1}, a_{2}, ..., a_{N}$.

Output: Giá trị nhỏ nhất [Min] của dãy số.

- Ý tưởng:

Khởi tạo giá trị $Min = a_{1}$.

Lần lượt nhận giá trị $i$ từ $2$ đến $N$, so sánh giá trị số hạng $a_{1}$ với giá trị $Min$, nếu $a_{i} < Min$ thì $Min$ nhận giá trị mới $a_{i}$

- Thuật toán:

Mô tả thuật toán theo cách liệt kê:

Bước 1. Nhập $N$ và dãy $a_{1}, a_{2},..., a_{N}$;

Bước 2. $Min \leftarrow a_{i}, i \leftarrow 2$;

Bước 3. Nếu $i > N$ thì đưa ra giá trị $Min$ rồi kết thúc;

Bước 4.

Bước 4.1: Nếu $a_{i} < Min$ thì $Min \leftarrow a_{i}$;

Bước 4.2: $i \leftarrow i + 1$ rồi quay lại bước 3.

Lỗi sai [in đậm]:

Bước 1: Nhập N, các số hạng a1, a2,…., aN;

Bước 2: Min ← ai, i ← 2;

Bước 3: Nếu i < N thì đưa đưa ra giá trị Min rồi kết thúc;     

           Nếu điều kiện là i Min thì Min ← ai;

        Do là tìm min [giá trị nho nhất] nên ta phải tìm những số < min.

Bước 4.2: i ← i+1, quay lại bước 3.

Sửa lại:

Bước 1: Nhập N, các số hạng a1, a2,…., aN;

Bước 2: Min ← ai, i ← 2;

Bước 3: Nếu i > N thì đưa đưa ra giá trị Min rồi kết thúc;

Bước 4:

Bước 4.1: Nếu ai < Min thì Min ← ai;

Bước 4.2: i ← i+1, quay lại bước 3.

Trắc nghiệm: Cho thuật toán tìm giá trị nhỏ nhất trong một dãy số nguyên sử dụng phương pháp liệt kê dưới đây

Bước 1: Nhập N, các số hạng a1, a2,…., aN

Bước 2: Min ←  a1, i ← 2;

Bước 3: Nếu i < N thì đưa đưa ra giá trị Min rồi kết thúc;

Bước 4:

Bước 4.1: Nếu ai > Min thì Min ← ai

Bước 4.2: i ← i+1, quay lại bước 3.

Hãy chọn những bước sai trong thuật toán trên:

A. Bước 2

B. Bước 3

C. Bước 4.1

D. Bước 4.2

Đáp án đúng C. Bước 4.1

Làm một số ví dụ để hiểu rõ hơn về câu hỏi trên cùng Top Tài Liệu nhé.

I. Bài tập tự luậ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: Số nguyên dương N.Output: “N là số nguyên tố” hoặc “N không là số nguyên tố”.

– Ý tưởng: Ta nhớ lại định nghĩa: Một số nguyên dương N là số nguyên tố nếu nó có đúng 2 ước số khác nhau là 1 và chính nó. Do đó ta có:

Nếu N = 1 thì N không là nguyên tố. Nếu 1 Nếu N \[\ge\] 4 và không có ước số trong phạm vi từ 2 đến phần nguyên căn bậc 2 của N thì N là số nguyên tố.

– Thuật toán:

B1: Nhập số nguyên dương N.

B2: Nếu N = 1 thì thông báo N không là số nguyên tố rồi kết thúc. B3: Nếu N B4: i \[\leftarrow\] 2B5: Nếu N>[*] thì thông báo N là số nguyên tố rồi kết thúc.

B3: Nếu N chia hết choi thì thông báo N là số không nguyên tố rồi kết thúc. B7: i \[\leftarrow\] i + 1 rồi quay lại bước 5.

Ví dụ 2: Bài toán sắp xếp

Cho dãy A gồm N số nguyên a1, a2, a3 …,an. Cần sắp xếp các số hạng để dãy A trở thành dãy không giảm [tức là số hạng trước không lớn hơn số hạng sau]

– Xác định bài toán:

Input: Dãy A gồm N số nguyênOutput: Dãy A được sắp xếp thành dãy không giảm.

Thuật toán sắp xếp bằng tráo đổi[Exchange Sort]

– Ý tưởng: Với 2 số liền kề, nếu số trước lớn hơn số sau ta đổi chổ cho nhau. Việc đó lặp lai, khi không còn sự đổi chổ nào nữa.

– Thuật toán

Cách liệt kê:

B1: Nhập vào n và dãy số nguyên a1, . . . ,aN;

B2: M \[\leftarrow\]

B3: M\[\leftarrow\]M – 1; i\[\leftarrow\]0;

B4: i \[\leftarrow\]i + 1;B6: Nếu i > M thì quay lại bước 3;B7. Nếu ai>ai+1thì tráo đổi cho nhau;B8: Quay lại bước 5;

Ví dụ 3: Bài toán tìm kiếm

Cho dãy A gồm N số nguyên khác nhau: a1……..an .và một số nguyên k. Cần biết có hay không chỉ số i mà ai=k. Nếu có hãy cho biết chỉ số đó.

Thuật toán tìm kiếm tuần tự:

– Xác định bài toán

Input: dãy A gồm N số nguyên khác nhau: a1…aNvà số nguyên k.Output: chỉ số i mà ai=k hoặc thông báo không có số hạng nào của dãy A có giá trị là k.

– Ý tưởng: lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khoá cho đến khi hoặc gặp một số hạng bằng khoá hoặc dãy đã được xét hết và không có giá trị nào bằng khoá. Trong trường hợp thứ 2 dãy A không có số hạng nào bằng khoá…

– Thuật toán

Liệt kê:

B1: Nhập vào N, các số hạng a1, . . . ,aNvà khóa k;

B2: i\[\leftarrow\]1;

B3: Nếu ai=k thì thông báo chỉ số i rồi kết thúc;

B4. i\[\leftarrow\]i+1;

B5: Nếu i>N thì thông báo dãy A không có số hạng nào có giá trị bằng k rồi kết thúc;B6: Quay lại bước 3;

Dãy A có N = 7 khóa k = 10

Tìm chỉ số i để ai = k.

i

1 2 3 4 5 6 7
ai 7 12 4 6 11 10

8

Ghi chú: k = 10 → i = 6

Trong thuật toán trên, i là biến chỉ số và nhận giá trị nguyên lần lượt từ 1 đến N + 1

II. Bài tập trắc ngiệm

Câu 1: Thuật toán có tính:

A. Tính xác định, tính liên kết, tính đúng đắn

B. Tính dừng, tính liên kết, tính xác định

C. Tính dừng, tính xác định, tính đúng đắn

D. Tính tuần tự: Từ  input cho ra output

Câu 2: Thuật toán tốt là thuật toán:

A. Thời gian chạy nhanh

B. Tốn ít bộ nhớ

C. Cả A và B đều đúng

D. Tất cả các phương án đều sai

Câu 3: Trong tin học sơ đồ khối là:

A. Ngôn ngữ lập trình bậc cao

B. Sơ đồ mô tả thuật toán

C. Sơ đồ về cấu trúc máy tính

D. Sơ đồ thiết kế vi điện tử

Câu 4: Chọn phát biểu đúng khi nói về Bài toán và thuật toán:

A. Trong phạm vi Tin học, ta có thể quan niệm bài toán là việc nào đó mà ta muốn máy tính thực hiện

B. Thuật toán [giải thuật] để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác đó, từ Input của bài toán này, ta nhận được Output cần tìm

C. Sơ đồ khối là sơ đồ mô tả thuật toán

D. Cả ba câu trên đều đúng

Câu 5: Thuật toán sắp xếp bằng đổi chỗ cho dãy số A theo trật tự tăng dần dừng lại khi nào?

A. Khi M =1 và không còn sự đổi chỗ

B. Khi số lớn nhất trôi về cuối dãy

C. Khi ai > ai + 1

D. Tất cả các phương án

Câu 6: Cho thuật toán tìm giá trị nhỏ nhất trong một dãy số nguyên sử dụng phương pháp liệt kê dưới đây:

Bước 1: Nhập N, các số hạng a1, a2,…., aN;

Bước 2: Min ←←  a1, i ←← 2;

Bước 3: Nếu i < N thì đưa đưa ra giá trị Min rồi kết thúc;

Bước 4:

Bước 4.1: Nếu ai > Min thì Min ←← ai;

Bước 4.2: i ←← i+1, quay lại bước 3.

Hãy chọn những bước sai trong thuật toán trên:

A. Bước 2

B. Bước 3

C. Bước 4.1

D. Bước 4.2

Câu 7: Khi biểu diễn thuật toán bằng lưu đồ [sơ đồ khối], hình chữ nhật có ý nghĩa gì?

A. Thể hiện thao tác tính toán

B. Thể hiện thao tác so sánh

C. Quy định trình tự thực hiện các thao tác

D. Thể hiện các thao tác nhập, xuất dữ liệu

Câu 8: Input của bài toán: “Hoán đổi giá trị của hai biến số thực A và C dùng biến trung gian B” là:

A. Hai số thực A, C

B. Hai số thực A, B

C. Hai số thực B,C

D. Ba số thực A,B,C

Câu 9: Cho bài toán kiểm tra tính nguyên tố của một số nguyên dương N. Hãy xác đinh Output của bài toán này?

A. N là số nguyên tố

B. N không là số nguyên tố

C. N là số nguyên tố hoặc N không là số nguyên tố

D. Tất cả các ý trên đều sai

Câu 10:“…[1] là một dãy hữu hạn các …[2] được sắp xếp theo một trình tự xác định sao cho khi thực hiện dãy các thao tác ấy, từ …[3] của bài toán, ta nhận được …[4] cần tìm”. Các cụm từ còn thiếu lần lượt là?

A. Input – Output – thuật toán – thao tác

B. Thuật toán – thao tác – Input – Output

C. Thuật toán – thao tác – Output – Input

D. Thao tác – Thuật toán– Input – Output

Video liên quan

Chủ Đề