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
- Giải lớp 11 Kết nối tri thức (các môn học)
- Giải lớp 11 Chân trời sáng tạo (các môn học)
- Giải lớp 11 Cánh diều (các môn học)
Tủ sách VIETJACK shopee lớp 10-11 cho học sinh và giáo viên (cả 3 bộ sách):
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.
- Soạn văn 11 (hay nhất) - KNTT
- Soạn văn 11 (ngắn nhất) - KNTT
- Giải sgk Toán 11 - KNTT
- Giải Tiếng Anh 11 Global Success
- Giải sgk Tiếng Anh 11 Smart World
- Giải sgk Tiếng Anh 11 Friends Global
- Giải sgk Vật Lí 11 - KNTT
- Giải sgk Hóa học 11 - KNTT
- Giải sgk Sinh học 11 - KNTT
- Giải sgk Lịch Sử 11 - KNTT
- Giải sgk Địa Lí 11 - KNTT
- Giải sgk Giáo dục KTPL 11 - KNTT
- Giải sgk Tin học 11 - KNTT
- Giải sgk Công nghệ 11 - KNTT
- Giải sgk Hoạt động trải nghiệm 11 - KNTT
- Giải sgk Giáo dục quốc phòng 11 - KNTT
- Giải sgk Âm nhạc 11 - KNTT