Bài 20. Thực hành bài toán tìm kiếm trang 94 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức>
Chỉnh sửa lại chương trình của Nhiệm vụ 3 để cho phép chương trình có thể tìm kiếm điểm số trên danh sách điểm số được sắp xếp theo thứ tự giảm dần.
Luyện tập
Chỉnh sửa lại chương trình của Nhiệm vụ 3 để cho phép chương trình có thể tìm kiếm điểm số trên danh sách điểm số được sắp xếp theo thứ tự giảm dần.
Phương pháp giải:
Dựa vào hướng dẫn của Nhiệm vụ 3 trang 97,98 SGK kết hợp kiến thức thực tế của bản thân để trả lời câu hỏi.
Lời giải chi tiết:
Def BinrySearch(A,K):
left=0
right=len(A)-1
while left<=right:
mid=(left+right)//2
if A[mid]==K:
return mid
elif A[mid]<K:
left=mid-1
else:
right=mid+1
return -1
input_file=open(“diemthi_sx.inp”)
ds_diem=[]
for line in input_file.readlines():
ds_diem.append(float(line))
input_file.close():
diem=float(input(‘nhập điểm số cần kiểm tra:’))
vitri=BanirySearch(ds_diem,diem)
if vitri==-1:
print(‘không tồn tại điểm số cần tìm trong danh sách’)
else:
print(‘điểm cần tìm nằm ở hàng thứ’,vitri,’trong danh sách’)
Vận dụng
Viết chương trình tra cứu tên theo điểm thi của học sinh trong lớp. Chương trình cho phép người dùng nhập vào khoảng điểm số cần tìm kiếm (ví dụ từ 6 đến 8). Chương trình kiểm tra và thông báo tên của học sinh có điểm số nằm trong khoảng tương ứng. Giải bài toán trong hai trường hợp: điểm được sắp xếp theo thứ tự ngẫu nhiên như trong Nhiệm vụ 1 hoặc điểm được sắp xếp theo thứ tự tăng dẫn như sau:
Sơn 5.6
Huyền 7.4
Nam 7.8
Hùng 8.4
Hương 8.9
Hà 9.5
Phương pháp giải:
Dựa vào hướng dẫn của Nhiệm vụ 1 trang 94, 95, 96 SGK kết hợp kiến thức thực tế của bản thân để trả lời câu hỏi.
Lời giải chi tiết:
1.Điểm được sắp xếp theo thứ tự ngẫu nhiên:
# Danh sách tên học sinh
class_names = ["Sơn", "Huyền", "Nam", "Hùng", "Hương", "Hà"]
# Danh sách điểm thi tương ứng
class_scores = [5.6, 7.4, 7.8, 8.4, 8.9, 9.5]
# Nhập khoảng điểm cần tra cứu
start_score = float(input("Nhập điểm bắt đầu của khoảng điểm: "))
end_score = float(input("Nhập điểm kết thúc của khoảng điểm: "))
# Kiểm tra và thông báo tên học sinh có điểm nằm trong khoảng tương ứng
found = False
for i in range(len(class_names)):
if class_scores[i] >= start_score and class_scores[i] <= end_score:
print("Học sinh", class_names[i], "có điểm là", class_scores[i])
found = True
if not found:
print("Không tìm thấy học sinh nào có điểm trong khoảng điểm đã nhập.")
2.Điểm được sắp xếp theo thứ tự tăng dần:
# Danh sách tên học sinh
class_names = ["Sơn", "Huyền", "Nam", "Hùng", "Hương", "Hà"]
# Danh sách điểm thi tương ứng (đã được sắp xếp theo thứ tự tăng dần)
class_scores = [5.6, 7.4, 7.8, 8.4, 8.9, 9.5]
# Nhập khoảng điểm cần tra cứu
start_score = float(input("Nhập điểm bắt đầu của khoảng điểm: "))
end_score = float(input("Nhập điểm kết thúc của khoảng điểm: "))
# Tìm kiếm nhị phân để tra cứu tên học sinh
found = False
low = 0
high = len(class_names) – 1
while low <= high:
mid = (low + high) // 2
if class_scores[mid] >= start_score and class_scores[mid] <= end_score:
print("Học sinh", class_names[mid], "có điểm là", class_scores[mid])
found = True
break
elif class_scores[mid] < start_score:
low = mid + 1
else:
high = mid - 1
if not found:
print("Không tìm thấy học sinh nào có điểm trong khoảng điểm đã nhập.")
- Bài 21. Các thuật toán sắp xếp đơn giản trang 99, 100 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 22. Thực hành bài toán sắp xếp trang 104 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 22. Kiếm thử và đánh giá chương trình trang 106 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 24. Đánh giá độ phức tạp thời gian thuật toán trang 111 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 25. Thực hành xác định độ phức tạp thời gian thuật toán trang 115 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
>> Xem thêm
Các bài khác cùng chuyên mục
- Bài 31. Thực hành thiết lập thư viên chương trình trang 143 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 30. Thiết lập thư viện cho chương trình trang 137 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 29. Thực hành thiết kế chương trình theo mô đun trang 132 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 28. Thiết kế chương trình theo mô đun trang 127 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- 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 trang 123 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 31. Thực hành thiết lập thư viên chương trình trang 143 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 30. Thiết lập thư viện cho chương trình trang 137 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 29. Thực hành thiết kế chương trình theo mô đun trang 132 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- Bài 28. Thiết kế chương trình theo mô đun trang 127 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức
- 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 trang 123 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thức