Phần 1

(4 câu)
Câu 1
Tự luận

1. Hãy xây dựng các bộ dữ liệu kiểm thử để tìm lỗi cho chương trình tính n! với n là một số nguyên dương nhập từ bàn phím.

1 n = int(input("Nhập số n: "))

2 if n > 0:

3 giaithua=1

4 for i in range(1,n+1):

5 giaithua = giaithua*i

6 print(n,"giai thừa bằng:",giaithua)

Bài làm:
Câu 2
Tự luận

2. Xét hàm mô tả thuật toán tính tổng các số chẵn của một dãy số cho trước.

1 def tongchan(A):

2 S = 0

3 for i in range(len(A)):

4 if A[i] % 2 == 0:

5 S = S + A[i]

6 return S

Tìm hai bộ dữ liệu đầu vào có cùng kích thước của thuật toán trên nhưng có thời gian chạy khác nhau.

Bài làm:
Câu 3
Tự luận

1. Cho dãy các số A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 11].

a) Viết chương trình mô tả thuật toán tìm kiếm phần tử C = 9 của dãy trên. Tính thời gian chính xác thực hiện công việc tìm kiếm này.

b) Giả sử dãy A ở trên đã được sắp xếp theo thứ tự tăng dần: A = [0, 1, 3, 5, 7, 9, 10, 11, 13, 16]. Viết chương trình tìm kiếm phần tử C = 9 theo thuật toán tìm kiếm nhị phân. Tính thời gian thực hiện thuật toán. So sánh với kết quả tìm kiếm ở câu a.

Bài làm:
Câu 4
Tự luận

2. Viết ba chương trình mô phỏng các thuật toán sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt mà em đã biết. Cho biết thời gian thực hiện các chương trình trên với bộ dữ liệu đầu vào là dãy A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 11].

Bài làm: