Cho dãy các số A = (3, 1, 0, 10, 13, 16, 9, 7, 5, 11]
Giải Tin học 11 Bài 23: Kiểm thử và đánh giá chương trình - Kết nối tri thức
Vận dụng 1 trang 110 Tin học 11: 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 nhị phân để tìm kiếm phân tử C = 9, đo thời gian thực hiện thuật toán. So sánh với kết quả 1ìm kiếm ở câu a.
Lời giải:
a)
import time
def linear_search(arr, x):
"""
Tìm kiếm tuyến tính trong dãy arr để tìm giá trị x.
Trả về vị trí của x trong dãy nếu x được tìm thấy, -1 nếu không tìm thấy.
"""
n = len(arr)
for i in range(n):
if arr[i] == x:
return i
return -1
# Dãy số A
A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 11]
# Phần tử cần tìm kiếm
C = 9
# Bắt đầu đo thời gian
start_time = time.perf_counter()
# Tìm kiếm phần tử C trong dãy A
result = linear_search(A, C)
# Kết thúc đo thời gian
end_time = time.perf_counter()
if result != -1:
print(f"Phần tử {C} được tìm thấy tại vị trí {result} trong dãy A.")
else:
print(f"Phần tử {C} không có trong dãy A.")
print(f"Thời gian thực hiện thuật toán: {end_time - start_time} giây.")
b)
import time
def binary_search(arr, x):
"""
Tìm kiếm nhị phân trong dãy arr để tìm giá trị x.
Trả về vị trí của x trong dãy nếu x được tìm thấy, -1 nếu không tìm thấy.
"""
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == x:
return mid
elif arr[mid] < x:
left = mid + 1
else:
right = mid - 1
return -1
# Dãy số A đã được sắp xếp
A = [0, 1, 3, 5, 7, 9, 10, 11, 13, 16]
# Phần tử cần tìm kiếm
C = 9
# Bắt đầu đo thời gian
start_time = time.perf_counter()
# Tìm kiếm phần tử C trong dãy A bằng thuật toán tìm kiếm nhị phân
result = binary_search(A, C)
# Kết thúc đo thời gian
end_time = time.perf_counter()
if result != -1:
print(f"Phần tử {C} được tìm thấy tại vị trí {result} trong dãy A.")
else:
print(f"Phần tử {C} không có trong dãy A.")
print(f"Thời gian thực hiện thuật toán: {end_time - start_time} giây.")
-Thời gian thực hiện ở câu a là 8.99999,thời gian thực hiện ở câu b là 6,49999 giây.
Lời giải bài tập Tin học 11 Bài 23: Kiểm thử và đánh giá chương trình hay khác:
Xem thêm lời giải bài tập Tin học lớp 11 Kết nối tri thức hay nhất, ngắn gọn khác:
Tin học 11 Bài 24: Đánh giá độ phức tạp thời gian thuật toán
Tin học 11 Bài 25: Thực hành xác định độ phức tạp thời gian thuật toán
Tin học 11 Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình
Tin học 11 Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần
Xem thêm các tài liệu học tốt lớp 11 hay khác:
- Giải sgk Tin học 11 Kết nối tri thức
- Giải Chuyên đề Tin học 11 Kết nối tri thức
- Giải SBT Tin học 11 Kết nối tri thức
TÀI LIỆU CLC DÀNH CHO GIÁO VIÊN VÀ PHỤ HUYNH LỚP 11
Bộ giáo án, bài giảng powerpoint, đề thi file word có đáp án 2026 tại https://tailieugiaovien.com.vn/
Hỗ trợ zalo: VietJack Official
Tổng đài hỗ trợ đăng ký: 084 283 45 85
Công cụ giáo viên (2048.VN)
Tạo- trộn đề thi miễn phí từ file PDF, Word, Giao bài nhanh chóng, Hoàn toàn Free
- Soạn văn 11 (hay nhất)
- Soạn văn 11 (ngắn nhất)
- Giải sgk Toán 11
- Giải Tiếng Anh 11 Global Success
- Giải sgk Vật Lí 11
- Giải sgk Hóa học 11
- Giải sgk Sinh học 11
- Giải sgk Lịch Sử 11
- Giải sgk Địa Lí 11
- Giải sgk Giáo dục KTPL 11
- Giải sgk Tin học 11
- Giải sgk Công nghệ 11
- Giải sgk Hoạt động trải nghiệm 11
- Giải sgk Giáo dục quốc phòng 11
- Giải sgk Âm nhạc 11

