Luyện tậpCâu hỏi 1. 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ể...
Câu hỏi:
Luyện tập
Câu hỏi 1. 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.
Câu trả lời:
Người trả lời: GV. Đỗ Đăng Việt
Phương pháp giải:Để 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, ta cần chỉnh sửa phần chương trình là mảng A lúc tại hàm binary search.Cách 1: Sửa mảng A để sắp xếp theo thứ tự giảm dần trước khi áp dụng thuật toán tìm kiếm nhị phân.Đoạn mã sửa lại:```pythonds_diem.sort(reverse=True)vitri=BinarySearch(ds_diem, diem)```Cách 2: Sửa thuật toán tìm kiếm nhị phân để tìm kiếm trên mảng đã sắp xếp theo thứ tự giảm dần.```pythondef BinarySearch(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: right = mid - 1 else: left = mid + 1 return -1```Câu trả lời:Để 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, ta cần chỉnh sửa phần chương trình là mảng A lúc tại hàm binary search hoặc sắp xếp mảng trước khi thực hiện tìm kiếm. Dưới đây là một số cách có thể sửa chương trình:1. Sắp xếp danh sách điểm số theo thứ tự giảm dần trước khi áp dụng thuật toán tìm kiếm nhị phân.```pythonds_diem.sort(reverse=True)vitri = BinarySearch(ds_diem, diem)```2. Sửa thuật toán tìm kiếm nhị phân để tìm kiếm trên mảng đã sắp xếp theo thứ tự giảm dần.```pythondef BinarySearch(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: right = mid - 1 else: left = mid + 1 return -1```Như vậy, sau khi thực hiện các chỉnh sửa trên chương trình, ta 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.
Câu hỏi liên quan:
Bình luận (0)