Giải chi tiết chuyên đề Tin học Khoa học máy tính 11 Cánh diều mới bài 3: Thực hành ứng dụng thuật toán tìm kiếm nhị phân bằng đệ quy

Giải bài 3: Thực hành ứng dụng thuật toán tìm kiếm nhị phân bằng đệ quy sách chuyên đề Tin học Khoa học máy tính 11 Cánh diều. Phần đáp án chuẩn, hướng dẫn giải chi tiết cho từng bài tập có trong chương trình học của sách giáo khoa. Hi vọng, các em học sinh hiểu và nắm vững kiến thức bài học.

Bài toán: Tìm kiếm phần tử lớn nhất trong mảng có phần đầu sắp xếp tăng dần và phần sau sắp xếp giảm dần.

Yêu cầu: Cho dãy A gồm n phần tử có giá trị đôi một khác nhau $A_{0}, A_{1},..., A_{n-1}$ sao cho tồn tại k(0 < k <n-1) để $A_{0}<A_{1}<...<A_{k}$ và $A_{k}>A_{k+1}>...>A_{n-1}$. Em hãy viết chương trình tìm phần tử số k sao cho số lần so sánh là ít nhất.

Lưu ý: $A_{k}$ là phần tử có giá trị lớn nhất của dãy A.

Hướng dẫn trả lời: 

Để giải quyết bài toán trên, hãy thực hiện lần lượt các bài thực hành sau.

Thực hành 1: Mô tả chi tiết cách giải bài toán trên dùng phương pháp tìm kiếm nhị phân.

Hướng dẫn: Các bước bao gồm:

Bước 1 (Chia). Xác định vị trí k ở chính giữa dãy A.

Bước 2 (Trị). Xác định dãy bên trái hay bên phải của A$_{k}$, chứa phần tử có giá trị lớn nhất trong dãy, quay trở lại Bước 1 tiếp tục tìm trên dãy mới đó. Quá trình kết thúc khi xác định được phần tử có giá trị lớn nhất.

Thực hành 2: Viết chương trình dùng đệ quy: Nhập vào giá trị n và n giá trị $A_{0}, A_{1},..., A_{n-1}$ có dạng phần đầu giá trị tăng dần và phần sau giá trị giảm dần, hãy hiển thị phần tử có giá trị lớn nhất của dãy A.

Hướng dẫn: Em hãy dựa vào cách viết chương trình tìm kiếm nhị phân để viết chương trình cho bài toán này.

Kiểm thử chương trình:

Em hãy chạy kiểm thử chương trình của phần thực hành với các dữ liệu kiểm thử trong Bảng 1.

Nếu chương trình cho kết quả sai với một bộ dữ liệu kiểm thử thì thêm vào các lệnh để in ra giá trị của các biến; sau đó, chạy lại chương trình với bộ dữ liệu kiểm thử này, theo dõi sự thay đổi giá trị của các biến và phát hiện lệnh nào tính toán sai.

Bảng 2. Một số bộ dữ liệu thử nghiệm cho Thực hành 2

SỐ THỨ TỰDỮ LIỆU VÀOKẾT QUẢ RA
1

12

4 7 8 10 14 21 22 36 91 81 77 62

Phần tử lớn nhất trong dãy có giá trị 91 ở vị trí số 8
2

12

4 7 8 10 91 81 77 62 36 22 21 14

Phần tử lớn nhất trong dãy có giá trị 91 ở vị trí số 4
3

10

2 4 6 8 10 9 7 5 3 1

Phần tử lớn nhất trong dãy có giá trị 10 ở vị trí số 4

Thực hành 3: Viết chương trình tìm kiếm tuần tự cho bài toán trên. Với mỗi bộ dữ liệu thử nghiệm, em hãy so sánh số lần lặp của chương trình tìm kiếm tuần tự (dùng vòng lặp) với số lần gọi đệ quy của chương trình của phần Thực hành 2 (dùng đệ quy). Từ đó, với nhiều bộ dữ liệu thử nghiệm, em sẽ nhận thấy phương pháp tìm kiếm nhị phân có số lần lặp ít hơn nhiều so với phương pháp tìm kiếm tuần tự.

Hướng dẫn:

Các bước bao gồm:

Bước 1. Viết chương trình tìm kiếm tuần tự dùng vòng lặp để tìm phần tử Ak. Sử dụng một biến đếm để đếm số lần lặp.

Bước 2. Sử dụng một biến đếm để đếm số lần thực hiện hàm đệ quy của phần Thực hành 2.

Vận dụng: Cho dãy A gồm n phần tử $A_{0}, A_{1}, ...,A_{n-1}$ sao cho tồn tại k (0 < k < n- 1) để $A_{0} ≤ A_{1} ≤... ≤ A_{k}$, và $A_{k} ≥ A_{k+1} ≥... ≥ A_{n-1}$. Em hãy viết chương trình dùng đệ quy để hiển thị chỉ số i là chỉ số nhỏ nhất mà A$_{i}$, có giá trị lớn nhất của dãy A. Em hãy chạy kiểm thử chương trình này với các bộ dữ liệu thử nghiệm trong Bảng 2.

Bảng 2. Một số bộ dữ liệu thử nghiệm cho bài toán Vận dụng

SỐ THỨ TỰDỮ LIỆU VÀOKẾT QUẢ RA
1

12

4 7 8 8 14 21 22 22 91 81 77 62

Phần tử lớn nhất trong dãy có giá trị 91 ở vị trí số 8
2

12

4 7 7 7 91 81 81 62 36 22 21 14

Phần tử lớn nhất trong dãy có giá trị 91 ở vị trí số 4
3

10

2 2 6 10 10 11 9 5 3 1

Phần tử lớn nhất trong dãy có giá trị 11 ở vị trí số 5
4

9

31 4 7 12 3 60 88 32 20

Phần tử lớn nhất trong dãy có giá trị 88 ở vị trí số 6
5

11

18 41 1 7 28 40 51 16 99 63 71

Phần tử lớn nhất trong dãy có giá trị 99 ở vị trí số 8

Hướng dẫn trả lời: 

Các bước bao gồm:

Bước 1. Viết chương trình tìm kiếm tuần tự dùng vòng lặp để tìm phần tử A$_{i}$, sử dụng một biến đếm để đếm số lần lặp.

Bước 2. Sử dụng một biến đếm để đếm số lần thực hiện hàm đệ quy của phần tử.

Tìm kiếm google: Giải chuyên đề Tin học Khoa học máy tính 11 Cánh diều bài 3, giải chuyên đề Tin học Khoa học máy tính 11 CD bài 3, Giải bài 3 Thực hành ứng dụng thuật toán tìm kiếm nhị phân bằng đệ quy

Xem thêm các môn học

Giải chuyên đề khoa học máy tính 11 cánh diều


Đia chỉ: Tòa nhà TH Office, 90 Khuất Duy Tiến, Thanh Xuân, Hà Nội
Điện thoại hỗ trợ: Fidutech - click vào đây
Chúng tôi trên Yotube
Cùng hệ thống: baivan.net - Kenhgiaovien.com - tech12h.com